查看onComplete
结果:目前item.name
始终为rty
,但应为(1/2):qwe
,(2/2):{{1 }}。我知道这个问题可以通过使用闭包来解决,但不知道如何。
稍微更新 http://jsfiddle.net/tJYem/
rty
答案 0 :(得分:0)
img.onload = (function(currentI) {
// here currentI will stay with the value the i had in the moment of creating this handler
})(i)
另外需要注意的是,在加载列表中的最后一个图像时会触发逻辑onComplete
处理程序,而不是所有图像都已加载时> EM>
答案 1 :(得分:0)
您希望所有i
处理程序都增加onload
,因此不要为该变量创建闭包。否则,所有处理程序都会增加自己的i
而不是共享值。此外,self
与图像无关。但是,item
在每个处理程序中应该有所不同:http://jsfiddle.net/tJYem/1/。
img.onload = (function(item){
return function(){
self.onProgress(++i, total, item);
i == total && self.onComplete();
}
})(item);