オブジェクトのプロパティをループする 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でこの問題に取り組む方法を教えてください。みんな、ありがとう!