只是一点琐事;我在一个循环中创建视图和模型,然后尝试将自定义事件绑定到它们。到目前为止都很好,但是当我想要找出与对象触发事件。我知道还有其他更长的方式来单独分配事件到每个系列,但我想我正在寻找一个更有效的方式:
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
}
这有意义吗?我想记录下哪个视图被更新了
对不起,我不认为我可以删除我的问题,由于缺乏点,但我刚刚在其他地方找到了答案,并认为也许将来有人会发现这有用:
当你触发事件时,对象应该作为第二个参数包含到触发器方法中,像这样
从BasicContentViewthis.trigger("updated",this)
集合是做这类事情的完美场所,它应该是这样的:
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.
}
});