【发布时间】:2014-09-12 12:59:39
【问题描述】:
我用部分替换了我文件中的一些重复代码,但现在相关部分的调用不再起作用了。
我有这个数据结构:
var data = { staff: [
{"name": "Alan"},
{"name": "Bettina"}
],"company": "Rad, Inc."};
原始模板如下所示:
<script id="first_template" type="text/x-handlebars-template">
{{#each staff}}
<li>Name: {{name}} , Company: {{../company}}</li>
{{/each}}
</script>
我改成这样使用部分:
<script id="list-partial" type="text/x-handlebars-template">
<li>Name: {{name}} , Company: {{../company}}</li>
</script>
<script id="second_template" type="text/x-handlebars-template">
{{#each staff}}
{{> list}}
{{/each}}
</script>
在带有部分公司名称的示例中,不会呈现公司名称。我在 jsfiddle 上放了一个工作示例:http://jsfiddle.net/staeff/qwms6h2b/
有谁知道,为什么它不起作用,我想做什么?
【问题讨论】:
-
因为 partials 有自己的上下文,你传入的。构造
{{> list}}等价于{{> list this}}。 -
您好raidendev,感谢您的回答。我已经阅读了上下文,但仍然感到困惑。对于我想做的事情,
this不是正确的上下文吗? -
问题出在
{{../company}}构造中,因为您在部分中没有上../级别。解决此问题的方法之一是将#each移动到部分内部并将其命名为“staffList”。但正确的方法是重构你的数据结构。
标签: handlebars.js