在循环中访问外部#each集合值的标准方法是什么? 例如:
<template name="example">
{{#each outerCollection}}
<tr>
{{#each innerCollection}}
<td>{{aaa}}</td>
{{/each}}
</tr>
{{/each}}
</template>
Template.example.aaa = function(){
// cannot access outerCollection values
}
在上面的Template.example.aaa中,this
指向内部集合。
我找不到访问outerCollection项的方法。 我的解决方案如下,我正在定义自己的帮助函数。 它是实现此目的的标准Meteor方式吗?
<template name="example">
{{#each outerCollection}}
<tr>
{{#each innerCollection}}
<td>{{myHelper ../outerItem innerItem}}</td>
{{/each}}
</tr>
{{/each}}
</template>
Handlebars.registerHelper('myHelper', function (outItem, inItem) {
// can access outerCollection via outerItem
});
我发现内部事件处理程序访问的情况为similar question。
答案 0 :(得分:12)
我想你自己已经回答了这个问题! https://github.com/meteor/meteor/wiki/Handlebars中记录了使用../
。
答案 1 :(得分:2)
您可以使用以下代码来获取外部集合。
假设您有一个名为 Collection.Customer 和 Collection.RechargePlan 的集合,并且您在模板中使用这两个集合来更新客户。
Customer = {"name":"James", "rechargeplan":"monthly"};
RechargePlan = [{"rechargeplan": "monthly"},{"rechargeplan": "yearly"}];
//Inside template, Bydefault Customer is available.
{{#each RechargePlan}}
{{#if equals ../rechargeplan rechargeplan}}
//Hurray Plan matches
{{/if}}
{{/each}}
在上面的代码中, ../ rechargeplan 实际上是 Customer.rechargeplan ,.. /实际上比heirarchy高出一步,然后访问该字段(如果可用),因为客户已经可用于模板,它的字段被选中。