【发布时间】:2012-02-14 20:48:17
【问题描述】:
是否有可能以某种方式从下划线模板中获取 DOM 元素并将其用作另一个模板?
这个想法是我的应用程序需要呈现一个文档,该文档包含一个带有项目和摘要的循环。我需要偶尔只重新渲染摘要或几个项目,所以我不能只重新渲染整个文档。
但是,我希望应用用户可以轻松地为文档创建自己的模板,并且我认为将所有内容保存在一个文档中会更容易。
我正在尝试使用这样的东西:
<script type="text/template" id="document-template">
<div id="document">
<h1><%= name %></h1>
<ul class="items">
<% _.each(items, function(item) { %>
<li><%= item %></li>
<% }); %>
</ul>
<div id="summary">
<p>Total items: <%= totalitems %></p>
</div>
</div>
</script>
现在,我可以轻松地执行此 var documentTemplate = _.template($('#document-template').html()); 将其转换为文档模板,但我想将摘要部分转换为模板,并将列表项转换为模板。
我可以这样做吗:
var summaryTemplate = _.template($('#document-template #summary').html());
var itemTemplate = _.template($('#document-template .items li').html());
PS。实际上,我正在使用 jQuery 的 $.get 从外部文件加载模板。这样,我将在一个大字符串中获取文档模板。从那里,我可以做到documentTemplate = _.template(loadedString);。
现在,如果我可以从字符串中提取#summary 元素,它应该可以工作。但是当我尝试将字符串转换为 DOM 元素时(var domElement = $(loadedString))
(所以我可以这样做:summaryTemplate = _.template($('#summary',domElement).html());,它不起作用,因为下划线将不再识别 标记。
【问题讨论】:
-
我强烈建议将下划线转换为pure
-
安东尼,这是为什么呢?