我有一组普通对象(由助手返回,但它与问题无关):
Things = [{
a: 'some thing'
}, {
a: 'more thing'
}];
然后我在Meteor模板中迭代它:
{{#each Things}}
<button>{{a}}</button>
{{/each}}
如果是收藏品,它是事件上下文的超级便捷捷径:
Template.whatever.events({
'click button': () => console.log(this); // e.g., {a: 'some thing'}
});
但是对于普通对象,this
快捷方式不起作用,它引用window
对象。
如何从even处理程序中提取出each
块的上下文的数组项,而不向迭代器显式添加一些唯一标识符?
答案 0 :(得分:0)
这是因为您使用的是arrow
es15语法。箭头语法在函数中保留this
的上下文。我不确定为什么它适用于集合而不是对象数组,但如果使用function
表示法,它将起作用。
Template.whatever.events({
'click button': function () {
console.log(this); // e.g., {a: 'some thing'}
}
});