5

jsRenderを使用してデータをhtmlページにレンダリングしています。データは完全にレンダリングされます。ただし、一部のコンテンツアイテムでは、HTMLテキスト(ハイパーリンクなど)がテキストとして表示されます。jqueryテンプレートには、{{htmlによってHTMLをレンダリングする方法があります。jsRenderで利用できる同様のものはありますか?私のコードは次のとおりです。

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

ありがとう。

4

4 に答える 4

9

JsRender のベータ版候補が出ました (昨夜の Boris の投稿http://www.borismoore.com/2012/03/approaching-beta-whats-ching-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を外部ソースから挿入することによるセキュリティリスクに注意してください。

編集:OK、例(特に03_no-encoding.html)をチェックすると、別の解決策がもたらされました。だから先に進んで、以前に提案した変更を元に戻して、使用してみてください

{{=Status!}

感嘆符は、jsRenderがHTMLを変更するのを防ぐ必要があります

于 2012-01-10T11:53:38.257 に答える