只是一点点琐事; 我在循环中创建视图和模型,然后尝试将自定义事件绑定到它们。到目前为止所有的goo,但是当我想找到对象时,发生了什么。我知道还有其他更长时间的方法可以将每个事件分别分配给系列,但我想我正在寻找一种更有效的方法:
initialize: function(args)
{
this.views = [];
this.models = [];
for(var i =0;i<args.items.length;i++)
{
this.models[i] = new BasicContentModel({url:args.items[i].urlRoot+args.items[i].url});
this.views[i] = new BasicContentView({model:this.models[i],id:i,className:"tab-"+i});
this.views[i].bind("updated",this.update,this) //<-- heres the bind
}
// blah blah
},
update: function(args)
{
console.log("updating:",args) //<-- trying to get which one called the update
}
这有意义吗?基本上我想记录哪个视图刚刚更新(向上冒泡)
答案 0 :(得分:5)
对不起,我不认为我可以删除我的问题,因为缺少积分但是我刚刚在其他地方找到了答案,并且认为未来可能会有人认为这有用:
当你触发事件时,对象应作为第二个参数包含在触发器方法中,如此
来自BasicContentView
this.trigger("updated",this)
答案 1 :(得分:0)
集合是完成这类事情的最佳场所,它会是这样的:
var myCollectionView = Backbone.View.extend({
initialize: function() {
this.models = [];
this.collection.add(this.models);
this.collection.bind("add", this.addOne, this);
}
addOne: function(model_instance) {
var basicContentView = new BasicContentView({model:model_instance});
this.$('ul').append(basicContentView); // if your basicContentView is an li for example.
}
});