Meteor template.rendered和this.data访问

时间:2013-07-17 10:33:02

标签: meteor

我有一个模板

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

我得到'未定义'。

获取的正确方法是什么? vendor.name中的vendor.addressTemplate.order.rendered

谢谢。

2 个答案:

答案 0 :(得分:4)

在Template.rendered中,this.data对应于模板的数据&#34; fed&#34; with,作为参数或使用{{#with}}构造。 vendor只是一个帮助函数,返回订单模板中可用的数据,但没有绑定到&#34; this.data&#34;。 为了解决您的问题,您有很多选择:

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

答案 1 :(得分:0)

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