Template.renderedでは、this.dataは、テンプレートとして{{#with}}構文を使用してテンプレートがフィードされたデータに対応します。 ベンダーは、注文テンプレートで利用可能なデータを返すヘルパー関数ですが、 "this.data"にバインドされていません。 あなたの問題を解決するには、多くのオプションがあります:
親テンプレートを定義し、この親にベンダーヘルパーを移動すると、パラメータとしてvendorを使用して注文を呼び出すことも、{{##ブロック}}
<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"
};
});
良い説明ありがとうございますthis.dataは '{{#}}'や '{{#each}} 'を使ってテンプレートで利用でき、テンプレートフィールドがヘルパーでレンダリングされるときには利用できません。今それは私にもっと明確です:) – joystick