是否有可能以某种方式从下划线模板中获取 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>
现在,我可以轻松地做到这一点documentTemplate = _.template($('#document-template').html());
将其转换为文档模板,但我想将摘要部分转换为模板,并将列表项也转换为模板。
我可以做这样的事情吗:
var summaryTemplate = _.template($('#document-template #summary').html());
var itemTemplate = _.template($('#document-template .items li').html());
附言。实际上,我正在使用 jQuery 的 $.get 从外部文件加载模板。这样我就能在一个大字符串中获得文档模板。从那里,我可以做documentTemplate = _.template(loadedString);
.
现在,如果我可以从字符串中提取 #summary 元素,它应该可以工作。但是当我尝试将字符串转换为 DOM 元素时(var domElement = $(loadedString)
)
(所以我可以这样做:summaryTemplate = _.template($('#summary',domElement).html());
,它不起作用,因为下划线将不再识别 标签。