JsRender:模板中的模板

时间:2012-11-13 21:12:33

标签: jsrender

我在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);


        });
    }
});

当我返回模板时(渲染与否),它返回'undefined'。有关如何使其工作的任何想法?我有很多模板使用此设置,我希望将其导出到单独的文件以便在更多地方使用:)

1 个答案:

答案 0 :(得分: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会相应地找出名称并进行渲染。