重用另一个模板中的 Mustache 模板,如果两者都在一个 html 文件中定义
Reusing a Mustache template from another one, if both are defined in one html file
如果两个模板都在同一html文件中的单独标签中定义,如何从另一个模板调用和使用一个模板?
我知道这当然可以用不同的 .mustache 文件来实现。
我相信您是在问如何使用与模板相同的HTML文件中定义的部件。此示例在两个单独的模板中使用相同的部分来演示这一点。如果您正在寻找其他示例,请告诉我。
这是两个不同的模板和一个部分
<script type=text id=tpl1>
{{greeting}} {{> planet}}
</script>
<script type=text id=tpl2>
{{planet}}
</script>
<script type=text id=tpl3>
{{> planet}} {{goal}}
</script>
下面是用于查找这些模板、准备其数据并使用重用部分进行渲染的 JavaScript。
// get template html
var tpl1 = $('#tpl1').html(),
tpl2 = $('#tpl2').html(), // partial
tpl3 = $('#tpl3').html(),
// define data for each template
tpl1Data = { 'greeting' : 'hello'},
tpl2Data = { 'planet' : 'world'},
tpl3Data = { 'goal' : 'peace'},
// define partial object
partial = {'planet' : tpl2 },
// render to html combining template view and partial view and defining partial
html1 = Mustache.to_html(tpl1, jQuery.extend(tpl1Data, tpl2Data), partial),
html2 = Mustache.to_html(tpl3, jQuery.extend(tpl3Data, tpl2Data), partial);
// write compiled Mustache templates to document
document.write(html1 + ', let''s try for ' + html2);
你可以在jsFiddle上看到这个完整的例子。
如果要在第二个模板中对部分使用不同的数据,只需定义类似 tpl2bData = { 'planet' : 'mars' }
的内容并在渲染时引用它 html2
.
html2 = Mustache.to_html(tpl3, jQuery.extend(tpl3Data, tpl2bData), partial);
相关文章:
- 组合regex,同时匹配两者,而不是两者都匹配
- 如何更改其内容的 Iframe 高度(两者都来自同一域)
- 重用另一个模板中的 Mustache 模板,如果两者都在一个 html 文件中定义
- 我在表单页面上有一个弹出窗口以及一个隐藏元素,具体取决于用户输入.两者都使用 jquery
- 元素及其父元素指定了 ng-单击,两者都被调用
- 如何从.js文件访问asp标记中的js变量(两者都在同一页上执行)
- 节点-工厂或构造函数,或者两者都没有
- jQuery函数在$(window).resize()或$(document).ready()上执行,而不是两者都执行
- 执行单击或双击.不是两者都有
- 从js调用php函数-两者都在单独的文件中
- 允许Javascript模块(类)与CommonJS、AMD或两者都不使用
- 为什么两者都承诺's然后&catch回调被调用
- 确定属性在JavaScript中是getter还是setter(或两者都有)
- AngularJs或NodeJs或两者都有
- AngularJS和jQuery..两者都用有什么不对?
- Javascript: getElementById vs getElementsById(两者都在不同的页面上工作)
- 谷歌地图标记或地图将显示,但不是两者都显示
- 是否有理由使用array.forEach()而不是for..在ES6中,两者都可以使用
- 我想在第一个选择的基础上填充第二个选择表单.两者都在从sql数据库中检索它们的元素
- jQuery1.9将html附加到页面中,然后是一个脚本,两者都依赖于文档准备