编码加载事件的闭包清晰度

时间:2013-11-18 21:10:03

标签: coding-style coffeescript closures

是否有明确的方法为第4行的加载事件编写此闭包:

for i,item of m
  # add item once image loaded
  new_item = $("<img src='#{util.image_url(item, 'large')}' />")
  new_item.on 'load', ((item) => (=> @add_item(item)))(item)
  $("#preload-area").append(new_item)

1 个答案:

答案 0 :(得分:2)

您需要do loop

  

当使用JavaScript循环生成函数时,通常会插入一个闭包装,以确保循环变量被关闭,并且所有生成的函数不只是共享最终值。 CoffeeScript提供do关键字,它立即调用传递的函数,转发任何参数。

这样的事情:

for i, item of m
  do (item) =>
    new_item = $("<img src='#{util.image_url(item, 'large')}' />")
    new_item.on 'load', => @add_item(item)
    $("#preload-area").append(new_item)