如何在嵌套循环中访问外部{{#each}}集合值

时间:2012-12-03 16:02:05

标签: meteor

在循环中访问外部#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

2 个答案:

答案 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高出一步,然后访问该字段(如果可用),因为客户已经可用于模板,它的字段被选中。