我在 CoffeeScript 中有以下 For Of 循环,它遍历对象的属性:
for buildingFrame of buildingNames
$("#bt-#{buildingFrame}").click () => @displayProperties(buildingFrame)
似乎只有 buildingFrame 的最后一个值被传递给每次调用@displayProperties
. 搜索该站点我发现我认为是这里的原因:可能的答案
之所以只使用循环中的最后一个值是因为 JavaScript 是一种后期绑定语言,并且循环不会引入新的范围。解决此问题的解决方案在 JavaScript 中的答案中给出,如下所示:
for(var i=0; i<barValues.length; i++) function(i){
...
}(i);
我已经尝试在上面的 coffeScript 中使用此解决方案来尝试解决问题,如下所示:
for buildingFrame of buildingNames => (buildingFrame)
$("#bt-#{buildingFrame}").click () => @displayProperties(buildingFrame)
(buildingFrame)
但这只是给我的编译器错误。有人请告诉我如何在 CS 中解决这个问题。谢谢大家!