加载事件的闭包的编码清晰度 [英] Coding clarity of closure for load event
本文介绍了加载事件的闭包的编码清晰度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有没有明确的方式来为第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屋!
查看全文