访问coffeescript for循环中的iterator变量

时间:2017-06-03 22:55:00

标签: javascript coffeescript

我试图通过一个对象列表进行迭代,并为每个对象添加一个事件处理程序。

事件处理程序需要对调用事件的对象的引用。

事件处理程序触发其自身范围内的事件,因此我使用匿名函数和粗箭头函数来管理它。

我想写下面的内容

        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方法来实现它?

0 个答案:

没有答案