我怎样才能dealViewItem
进入FOR循环的范围?目前,dealViewItem的作用域不在其中,我的所有事件监听器都被添加到最后一个dealViewItem中.
for deal in dealArray
dealViewItem = dealViewFactory.DealDetail(deal)
dealViewItem.addEventListener 'click', ->
dealCart.push(deal.dealId)
dealViewItem.setAddedToCart()
btnTakeDeals.setEnabled = true
dealHolder.add(dealViewItem)
Run Code Online (Sandbox Code Playgroud)
Ale*_*yne 35
这就是do
关键字的用途.它将立即运行一个函数,并将任何与其中一个参数同名的局部变量传递给它,从而确保正确的闭包范围.
for deal in dealArray
do (deal) ->
dealViewItem = dealViewFactory.DealDetail(deal)
dealViewItem.addEventListener 'click', ->
dealCart.push(deal.dealId)
dealViewItem.setAddedToCart()
btnTakeDeals.setEnabled = true
dealHolder.add(dealViewItem)
Run Code Online (Sandbox Code Playgroud)
do
也可以在循环之外用于自执行函数.
#coffeescript
do ->
foo = 'bar'
// javascript
(function() {
var foo;
return foo = bar;
})();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3031 次 |
最近记录: |