我有一个模板
<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.address
和Template.order.rendered
?
谢谢。
答案 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());
}