我正在与backbone.js斗争。我对js很新,习惯于as3更面向对象
我尝试用骨干制作一个简单的图库。我加载了100张图片,我希望它们在加载时淡入。
我在AppView中有这个。对于每个图像网址,我得到一个PhotoView
var view = new PhotoView({model: photo, list:this.imageList});
this.imageList.append(view.render().el);
在Photoview中,我使用此代码将onload()附加到img标记上(找到here):
render: function() {
var self = this;
this.$el.append(some_html_with_img_elements);
this.$el.find('img').on('load', function() { self.img_loaded() });
return this;
}
问题是在img_loaded()中我反复获得相同的视图(最后一个视图)。任何人都知道如何保持对正确视图的引用
答案 0 :(得分:3)
将this
作为参数传递给img_loaded
,以便您可以获得刚刚加载的图像的引用,并根据需要对其进行操作。
由于你没有发布img_loaded
函数的代码,我不确定你是否试图在每次加载时一次淡出它们(一旦你传入一个简单的工作图片参考),或者等到它们全部加载完毕并将它们全部淡入(需要一些额外的代码)。
答案 1 :(得分:0)
您可以将视图的引用传递给这样的回调函数。
var me = this;
me.$el.find("img").on("load", { me: me }, function (event) { event.data.me.img_loaded(); });