我正在与backbone.js作斗争。我对js很陌生,习惯了as3更面向对象的
我试着制作一个有骨气的简单图片库。我加载了100张图片,如果加载了,我希望它们能淡入。
我的AppView中有这个。对于我得到的每个图像url,我创建一个PhotoView
var view = new PhotoView({model: photo, list:this.imageList});
this.imageList.append(view.render().el);
在Photoview中,我使用以下代码将onload()附加到img标签上(在此处找到):
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()中,我一次又一次地得到相同的视图(最后一个视图)。任何人都知道如何保持对右视图的引用
将this
作为参数传递给img_loaded
,这样您就可以获得对刚刚加载的图像的引用,并根据需要对其进行操作。
由于您没有发布img_loaded
函数的代码,我不确定您是试图在加载每个函数时一次将它们淡入一个(传入图像引用后,这是一个简单的作业),还是等到它们全部加载后再一次将其全部淡入(需要一些额外的代码)。
您可以像这样将视图的引用传递给回调函数。
var me = this;
me.$el.find("img").on("load", { me: me }, function (event) { event.data.me.img_loaded(); });