2012-01-10 240 views
4

我正在使用jsRender在html頁面上呈現我的數據。數據完美呈現。但是,在某些內容項目中,HTML文本(如超鏈接)顯示爲文本。在jQuery模板中,有一種通過{{html}呈現HTML的方法。 jsRender中有沒有類似的東西? 我的代碼如下:jsRender渲染HTML

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

謝謝。

回答

2

看着jsRender的源代碼,我可以看到該插件將<,>和&字符轉換爲它們的HTML實體。也許你可以嘗試這些線路從jsRender

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

改變

escapeMapForHtml = { 
}, 

心靈從外部來源選中插入HTML的安全隱患!

編輯:好的,檢查示例(特別是03_no-encoding.html)帶來了另一種解決方案。因此,繼續前進,並撤消我先前提議的變更,並嘗試使用

{{=Status!} 

感嘆號應防止jsRender更改HTML

+0

它不起作用。它將HTML視爲字符串並放入「」中。例如

http://www.gmail.com

2012-01-10 12:04:31

+0

請參閱我上面最近的編輯... – devnull69 2012-01-10 12:30:49

+0

也許您應該刪除答案中的第一個(非工作)部分? – M4N 2012-01-25 13:25:44

9

的JsRender測試候選人現在出(見鮑里斯後,從昨晚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> 

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));​ 
​ 
6

使用{{:Status}}生成HTML代碼。