May*_*kar 5 html jquery templates jsrender
我正在使用jsRender在html页面上呈现我的数据.数据完美呈现.但是,在某些内容项中,HTML文本(如超链接)显示为文本.在jquery模板中,有一种方法可以通过{{html来呈现HTML.jsRender中有类似的东西吗?我的代码如下:
<p>
{{ =Status}} //need to convert this to HTML so it should appear as hyperlink.
</p>
Run Code Online (Sandbox Code Playgroud)
谢谢.
JsRender测试版候选人现已退出(参见Boris在昨晚的帖子http://www.borismoore.com/2012/03/approaching-beta-whats-changing-in_06.html)
我写了一个快速小提琴来展示如何在这里呈现HTML:http://jsfiddle.net/johnpapa/NfUGB/
基本上,只需使用{{> yourProperty}}标记来呈现HTML编码.使用{{:yourProperty}}跳过编码.
<script id="template" type="text/x-jsrender">
<p>
{{:foo}}
</p>
<ul>
{{for testData}}
<li>{{:name}} - {{:markup}} - {{>markup}}</li>
{{/for}}
</ul>
</script>
<div id="div1"></div>
Run Code Online (Sandbox Code Playgroud)
.
var vm = {
foo: "names",
testData: [
{
name: "John",
markup: "<span style='background: yellow'>John</span>"
},
{
name: "Boris",
markup: "<span style='background: orange'>Boris</span>"
}
]
};
$("#div1").html($("#template").render(vm));?
?
Run Code Online (Sandbox Code Playgroud)
查看 jsRender 的源代码,我可以看到该插件将 <、> 和 & 字符转换为其 HTML 实体。也许你可以尝试从 jsRender 更改这些行
escapeMapForHtml = {
"&": "&",
"<": "<",
">": ">"
},
Run Code Online (Sandbox Code Playgroud)
到
escapeMapForHtml = {
},
Run Code Online (Sandbox Code Playgroud)
请注意从外部源插入未经检查的 HTML 的安全风险!
编辑:好的,检查示例(特别是03_no-encoding.html)带来了另一个解决方案。因此,继续撤消我之前提出的更改并尝试使用
{{=Status!}
Run Code Online (Sandbox Code Playgroud)
感叹号应该阻止 jsRender 更改 HTML