更新:经过另一天的研究,我发现当前的 jQuery 模板库无法做到这一点。这篇文章 描述了一个很好的方法。
我仍然想听听关于这样做的任何其他想法。上面链接的文章要求将返回的模板字符串插入到 DOM 中。似乎将 DOM 排除在外是理想的,而且浏览器的开销也更少。想象一个大页面,其中包含多个可能无法使用的复合模板。虽然,可能是因为模板包含在脚本标签中,每个模板只有一个 DOM 项?来吧,让我们听听一些想法......
使用jQuery 模板库,将多个相关的、相对较小的模板组合在一起的最佳方法是什么?您需要<script>
为每个单独的模板使用一个标签吗?在通过 AJAX 动态拉取这些模板的情况下呢?我可以以某种方式组合这些模板吗?
考虑以下:
<script id="movieTemplate" type="text/x-jquery-tmpl">
{{tmpl "#titleTemplate"}}
<tr class="detail"><td>Director: ${Director}</td></tr>
</script>
<script id="titleTemplate" type="text/x-jquery-tmpl">
<tr class="title"><td>${Name}</td></tr>
</script>
现在,因为这两个模板非常密切相关(一个依赖于另一个),所以将它们合并到一个 AJAX 调用中并同时获取它们是有意义的。我有一些想法,但我想知道是否有通用/最佳方法来做到这一点?目前我提取了一大块 HTML,然后执行 .find() 来获取模板的特定 HTML 片段......例如:
var templatePackage = fancyAjaxCalltoGetTemplates();
“templatePackage”可能看起来像这样:
<div id="templatePkg">
<div id="movieTemplate">
{{tmpl "#titleTemplate"}}
<tr class="detail"><td>Director: ${Director}</td></tr>
</div>
<div id="titleTemplate">
<tr class="title"><td>${Name}</td></tr>
</div>
</div>
然后我可以这样做:
var titleTemplate = jQuery.template('titleTemplate', $(templatePackage).find('#titleTemplate') );
和
var movieTemplate = jQuery.template('movieTemplate', $(templatePackage).find('#movieTemplate') );
...让我知道你的想法...你会怎么做?