抱歉,ES6 newb在这里:
Template.hello.onCreated( () => {
// counter starts at 0
this.counter = new ReactiveVar(0);
});
Template.hello.helpers({
counter() {
return Template.instance().counter.get();
},
});
Template.hello.events({
'click button'(event, instance) {
// increment the counter when button is clicked
instance.counter.set(instance.counter.get() + 1);
},
});
当我点击按钮时,我得到Cannot read property 'get' of undefined
但是当我做的时候
Template.hello.onCreated( function(){
// counter starts at 0
this.counter = new ReactiveVar(0);
});
它工作正常。
所以ES6的this
关键字的胖箭头绑定有什么问题我还没有?
答案 0 :(得分:2)
当Meteor调用onCreated
处理程序时,它会将函数的this
值绑定到模板实例。 Arrow functions 词法绑定this
,这意味着箭头函数中的this
与定义函数的位置相同,在您的情况下可能{{1} }。因此,您正在创建全局变量window
,而不是将其分配给模板实例。
对于counter
,onCreated
等,使用箭头功能毫无意义。