2017-07-16 7 views
-1

を参照私は(私のページの一部の要素のクリックで)私のテンプレートをレンダリングする方法です同じテンプレート

$("[entity]").click(function(e) { 
    var entityType = $(this).data('type') 
    var source = $(`#${entityType}Tmpl`).html(); 
    var tmpl = $.templates(source); 
    $("#details").html(tmpl.render(getData(entityType)); 
}); 

2 entityTypeのための単一のテンプレートを定義するjsRenderの方法がある場合、私は、思ったんだけど次のようになります。

<script id="entity1;entity2" type="text/x-jsrender">type: {{:entityType}} </script> 

答えて

0

エンティティタイプをヘルパーとして渡すことができます。その後

var helplers = { 
    type: entityType, 
    getValue: myGetValFunction, 
    ... 
}; 

var html = tmpl.render(getData(entityType), helpers); 

$("#details").html(html); 

テンプレートは、タイプに基づいて出力をレンダリングします

<script id="tmpl" type="text/x-jsrender"> 
    type: 
    ... 
    {{if ~type==='foo}}...{{/if}} 
    ... 
    {{:~getValue(~type)}} 
    ... 
</script> 

http://www.jsviews.com/#helpers

+0

私はすでに私のデータにentityTypeを持っている、という事実は、私はいくつかのテンプレート(entityTypeにつき1)を持っています唯一の例外は2 entityTypeは同じテンプレートを指している必要があります。テンプレート内の値をチェックする(またはクリックハンドラをチェックインする)他の方法はありませんか? – alfredopacino

+0

あなたが何を意味するのか、あなたが解決しようとしている問題は私には分かりません。データ構造を示すjsfiddleスケルトンの例と、テンプレートを呼び出す方法を提供し、問題の内容を明確にすることができます。テンプレートでは、渡されたデータを確認したり、ヘルパーとして渡すことによって、必要な値を確認することができます。他に何か要りますか?! – BorisMoore

関連する問題