Подтвердить что ты не робот

Как получить доступ к внешнему {{#each}} значению коллекции в вложенном цикле

Каков стандартный способ доступа к внешним значениям коллекции #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 указывает на внутреннюю коллекцию.

Я не могу найти способ доступа к элементам externalCollection. Мое решение похоже на ниже, я определяю свою собственную вспомогательную функцию. Является ли это стандартным способом Метеор для достижения этой цели?

<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
});

Я нашел аналогичный вопрос для случая доступа к обработчику внутреннего события.

4b9b3361

Ответ 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,../на самом деле пошел на один шаг выше иерархии, а затем получил доступ к полю, если он доступен, так как клиент уже доступен для шаблона, это поле подбирается.