我在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'。有关如何使其工作的任何想法?我有很多模板使用此设置,我希望将其导出到单独的文件以便在更多地方使用:)
答案 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会相应地找出名称并进行渲染。