1

jsrenderのテンプレート内のテンプレートに問題があります。むしろ、次のように、ページのスクリプトブロックにある限り、実際に機能します。

<script id="template_1" type="text/x-jsrender">
<h2>{{>Title}}</h2>
<ul>    
    {{for Details tmpl="#template_2" /}}
</ul>
</script>

<script id="template_2" type="text/x-jsrender">
<li>
    {{>Headline}} - {{>Text}}
</li>
</script>

ただし、template_2を外部ファイルに移動して他の場所で使用したい場合、再度機能させることができないようです。次の方向に別のタグを作成してみました。

$.views.converters({
    insertDetailList: function (data) {
        $.get('/templates/_details.tmpl.htm', null, function (template) {

        var tmpl = $.templates(template);


        });
    }
});

ただし、テンプレートを返すと(レンダリングされているかどうかに関係なく)、「未定義」が返されます。これを機能させる方法についてのアイデアはありますか?より多くの場所で使用するために別々のファイルにエクスポートしたいこの設定のテンプレートがたくさんあります:)

4

1 に答える 1

0

これが役立つかどうかはわかりませんが、これが私のアプローチでした...

// in a utility .js file
compileTemplates = function () {
    $.when(
        $.get(getPath("MyTableTemplate")),
        $.get(getPath("MyRowTemplate"))
    )
    .done(function (table, row) {
        $.templates({
            tmplTable: table[0],
            tmplRow: row[0]
        });
    });

...その後、通常どおりネストします...

<tbody>
    {{for MyItems tmpl='tmplRow' /}}
</tbody>

次に、レンダリングの前に compileTemplates を呼び出すと、jsRender が名前を判断し、それに応じてレンダリングします。

于 2013-01-18T23:19:33.090 に答える