5

我正在使用 jsRender 在 html 页面上呈现我的数据。数据得到完美呈现。但是,在某些内容项中,HTML 文本(如超链接)显示为文本。在 jquery 模板中,有一种方法可以通过 {{html. jsRender 中是否有类似的东西可用?我的代码如下:

<p>
{{ =Status}}   //need to convert this to HTML so it should appear as hyperlink.
</p> 

谢谢。

4

4 回答 4

9

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));​
​
于 2012-03-07T14:44:53.870 回答
6

用于{{:Status}}生成 HTML 代码。

于 2012-08-13T18:39:39.867 回答
2

查看 jsRender 的源代码,我可以看到该插件将 <、> 和 & 字符转换为它们的 HTML 实体。也许您可以尝试从 jsRender 更改这些行

escapeMapForHtml = {
    "&": "&amp;",
    "<": "&lt;",
    ">": "&gt;"
},

escapeMapForHtml = {
},

注意从外部来源插入未经检查的 HTML 的安全风险!

编辑:好的,检查示例(尤其是 03_no-encoding.html)带来了另一种解决方案。所以继续并撤消我之前提出的更改并尝试使用

{{=Status!}

感叹号应防止 jsRender 更改 HTML

于 2012-01-10T11:53:38.257 回答
0

尝试这个..

<p>
{^{ =Status}}   
</p>
于 2019-07-12T07:19:59.080 回答