Meteor template.rendered和this.data access

Meteor template.rendered和this.data access,meteor,Meteor,我有一个模板 <template name='order'> {{vendor.name}} </template> 当我尝试在中访问此.data时 Template.order.rendered = function () { console.log(this.data); }; 我得到“未定义” 在Template.order.rendered中获取例如vendor.name和vendor.address的正确方法是什么 谢谢。在Template.rend

我有一个模板

<template name='order'>
  {{vendor.name}}
</template>
当我尝试在中访问此.data时

Template.order.rendered = function () {
  console.log(this.data);
};
我得到“未定义”

Template.order.rendered
中获取例如
vendor.name
vendor.address
的正确方法是什么


谢谢。

在Template.rendered中,this.data对应于模板“馈送”的数据,可以作为参数,也可以使用{{with}}构造。
Template.order.rendered = function () {
    console.log(Template.order.vendor());
}
供应商只是一个助手函数,返回订单模板中可用的数据,但不绑定到“this.data”。 因此,要解决您的问题,您有许多选择:

定义父模板并将供应商帮助器移动到此父模板,然后您也可以调用order with vendor作为参数,或者使用{{#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);
};

感谢您对为什么使用
{{{with}}
{{{{each}}
在模板中可以使用this.data进行了很好的解释,并且在使用帮助程序呈现模板字段时不可用。现在我更清楚了:)
<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"
    };
});