获取Coffeescript在FOR循环中创建一个局部变量 [英] Getting Coffeescript to create a local variable in a FOR loop

查看:122
本文介绍了获取Coffeescript在FOR循环中创建一个局部变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何获得 dealViewItem 进入FOR循环的范围?目前,dealViewItem在其外部作用域,所有我的事件侦听器都被添加到最后一个dealViewItem。

How can I get dealViewItem into the scope of the FOR loop? Currently, dealViewItem is scoped outside of it, and all my event listeners are added to the last dealViewItem.

  for deal in dealArray
        dealViewItem = dealViewFactory.DealDetail(deal)
        dealViewItem.addEventListener 'click', ->
          dealCart.push(deal.dealId)
          dealViewItem.setAddedToCart()
          btnTakeDeals.setEnabled = true
        dealHolder.add(dealViewItem)


推荐答案

这是 do 。它将立即运行一个函数,任何与参数之一具有相同名称的局部变量将被传递给它,以确保适当的关闭范围。

this is what the do keyword is for. It will run a function immediately and any local variables with the same name as one of the arguments will be passed into it, ensuring proper closure scope.

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)

查看编译版本

do 在循环之外使用自执行功能。

do can also be used outside of loops for self executing functions.

#coffeescript
do ->
  foo = 'bar'

// javascript
(function() {
  var foo;
  return foo = bar;
})();

这篇关于获取Coffeescript在FOR循环中创建一个局部变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆