我试图通过一个对象列表进行迭代,并为每个对象添加一个事件处理程序。
事件处理程序需要对调用事件的对象的引用。
事件处理程序触发其自身范围内的事件,因此我使用匿名函数和粗箭头函数来管理它。
我想写下面的内容
for choice in allChoices
choice.ee.on "choiceMade", () => @incrementChoicesMade choice
当然这不起作用,因为choice
变量被每个循环覆盖,所以所有对象事件都传递给allChoices数组中的最后一个对象。
如果我要手写香草javascript来执行此操作,我会写一些类似的内容,
var _i, _len, _this = this;
for (_i = 0, _len = allChoices.length; _i < _len; _i++) {
allChoices[_i].ee.on("choiceMade", function() {
return _this.incrementChoicesMade(allChoices[_i]);
});
}
有没有一种纯粹的coffeescript方法来实现它?