为什么 polymer 不以 json 格式呈现从服务器获取的 html 标记?
why polymer not render html markup fetched from server in json format?
我的自定义元素:
<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)
来自数据库的原始数据:
[{"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"}]
来自数据库的解析数据:
[{"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"}]
结果是:
我是不是漏掉了什么?
出于安全原因,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。
我的自定义元素:
<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)
来自数据库的原始数据:
[{"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"}]
来自数据库的解析数据:
[{"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"}]
结果是:
我是不是漏掉了什么?
出于安全原因,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。