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 回答