我正在使用 jsRender 在 html 页面上呈现我的数据。数据得到完美呈现。但是,在某些内容项中,HTML 文本(如超链接)显示为文本。在 jquery 模板中,有一种方法可以通过 {{html. jsRender 中是否有类似的东西可用?我的代码如下:
<p>
{{ =Status}} //need to convert this to HTML so it should appear as hyperlink.
</p>
谢谢。
JsRender beta 候选人现已推出(参见昨晚 Boris 的帖子http://www.borismoore.com/2012/03/approaching-beta-whats-chang-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>
.
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));
用于{{:Status}}
生成 HTML 代码。
查看 jsRender 的源代码,我可以看到该插件将 <、> 和 & 字符转换为它们的 HTML 实体。也许您可以尝试从 jsRender 更改这些行
escapeMapForHtml = {
"&": "&",
"<": "<",
">": ">"
},
至
escapeMapForHtml = {
},
注意从外部来源插入未经检查的 HTML 的安全风险!
编辑:好的,检查示例(尤其是 03_no-encoding.html)带来了另一种解决方案。所以继续并撤消我之前提出的更改并尝试使用
{{=Status!}
感叹号应防止 jsRender 更改 HTML
尝试这个..
<p>
{^{ =Status}}
</p>