問題

私はテンプレートを持っています

 <template name='order'>
  {{vendor.name}}
</template>
 

レンダリングされた

   Template.order.vendor = function () {
    return {name: 'Chanel', address: 'Paris' };
  };
 

this.dataにアクセスしようとすると

 Template.order.rendered = function () {
  console.log(this.data);
};
 

私は '未定義'を取得します。

例えば正しい方法は何ですか? Template.order.renderedvendor.namevendor.address?

ありがとうございました。

  ベストアンサー

Template.renderedでは、this.dataはパラメータとして、または{{#with}}構造を使用して、テンプレートが "fed"されたデータに対応します。 ベンダーは、注文テンプレートで利用可能なデータを返すヘルパー関数ですが、 "this.data"に結合されていません。 だからあなたの問題を解決するために、いくつかの選択肢があります:

親テンプレートを定義し、ベンダーヘルパーをこの親に移動すると、ベンダーをパラメータとして呼び出すか、{{#with block}}を使用することができます。

 <template name="parent">
    {{> order vendor}}
    {{#with vendor}}
        {{> order}}
    {{/with}}
</template>

<template name="order">
    {{name}}
</template>

Template.parent.vendor=function(){
    return{
        name:"Chanel",
        address:"Paris"
    };
};

Template.order.rendered=function(){
    // this.data == vendor object returned in parent helper
    console.log(this.data);
};
 

カプセル化された親テンプレートの必要性を排除して、グローバルヘルパーを登録することもできます。

 Handlebars.registerHelper("vendor",function(){
    return{
        name:"Chanel",
        address:"Paris"
    };
});
 

  同じタグがついた質問を見る

meteor