为什么聚合物不呈现从json格式的服务器获取的html标记?

时间:2015-04-17 09:24:10

标签: html json django polymer

我的自定义元素:

<core-ajax auto method="GET" url="http://example.com/book" handleAs="json" response="{{response}}"></core-ajax>
      <core-header-panel mode="cover" layout horizontal flex>   
        <div  class="core-header tall">{{articlename}}</div>
        <div  class="content" flex >
          {{response[0].content}}
        </div>
</core-header-panel>
db中的内容以markdown格式存储,在请求时将转换为html标记,此过程很好,我得到了转换后的html标记,但是当它动态插入页面时,html标记未呈现而原始的html标签。

标记为html :(我使用django-markdown-deux

markdown(content)

来自db的原始数据:

[{"id":4,"title":"css 1","category":"CSS","articletags":["sa","asd"],"content":"*asdsdsasadsa*\r\n\r\n    sdsadsadssdsasdsa","like":0,"createtime":"2015-04-17T05:58:01Z"}]

从db解析数据:

[{"id":4,"title":"css 1","category":"CSS","articletags":["sa","asd"],"content":"<p><em>asdsdsasadsa</em></p>\n\n<pre><code>sdsadsadssdsasdsa\n</code></pre>\n","like":0,"createtime":"2015-04-17T05:58:01Z"}]

结果是:

enter image description here enter image description here

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

出于安全原因,Polymer在数据绑定时会转义任何HTML。 您必须在响应进入时手动设置内容。例如:

<core ajax ... on-core-response="{{handleResponse}}"></core-ajax>
<div id="content"></div>

...

Polymer({
   ...
   handleResponse: function (e) {
     this.injectBoundHTML(e.detail.response[0].content, this.$.content);
   }
});

有关详情,请参阅official docs