11

ループ内で外側の #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
});

内部イベント ハンドラー アクセスの場合についても、同様の質問が見つかりました。

4

2 に答える 2

12

私はあなたがこれに自分で答えたと思います!使用方法はhttps://github.com/meteor/meteor/wiki/Handlebars../に記載されています。

于 2012-12-14T00:52:46.797 に答える
2

以下のコードを使用して、外部コレクションを取得できます。

Collection.CustomerおよびCollection.RechargePlanというコレクションがあり、Customer を更新するためのテンプレートで両方を使用しているとします。

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であり、../ は実際には階層の 1 つ上に移動し、利用可能な場合はフィールドにアクセスします。Customer は既にテンプレートで使用できるため、そのフィールドが選択されます。

于 2016-05-14T12:27:02.980 に答える