加载事件的闭包的编码清晰度 [英] Coding clarity of closure for load event

查看:134
本文介绍了加载事件的闭包的编码清晰度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有明确的方式来为第4行的加载事件写这个闭包:

  for i,item 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)


解决方案

您需要 do 循环


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


像这样:

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


Is there are clear way to write this closure for the load event on line #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)

解决方案

You want a do loop:

When using a JavaScript loop to generate functions, it's common to insert a closure wrapper in order to ensure that loop variables are closed over, and all the generated functions don't just share the final values. CoffeeScript provides the do keyword, which immediately invokes a passed function, forwarding any arguments.

Something like this:

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)        

这篇关于加载事件的闭包的编码清晰度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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