在我的应用程序中,我有两个视图共享相同模型的情况。
当我通过模型访问集合并从集合中删除模型时,我遇到了麻烦。问题是在调用this.model.collection.remove(this.model)
后,视图的引用this.model
未定义。
我在删除之前没有解除事件绑定的原因是,我需要mySecondView
能够了解删除事件,以便从DOM中删除它自己。
MyView = Backbone.View.extend({
events : {
'click .delete' : deleteModel
}
initialize : function() {
this.model.on('remove', this.dispose, this)
},
deleteModel : function() {
if( this.model.isNew() )
{
this.model.collection.remove( this.model );
//remove all the events bound to the model
this.model.unbind(); //this.model is undefined
this.dispose();
}
}
});
MySecondView = Backbone.View.extend({
initialize : function() {
//call the custom dispose method to remove the view
this.model.on('remove', this.dispose, this );
}
});
myModel = new Backbone.Model();
myCollection = new Backbone.Collection( myModel );
myView = new MyView({ model : myModel });
mySecondView = new MySecondView({ model : myModel });
唯一有效的方法是在deleteModel
任何建议?
答案 0 :(得分:0)
问题是编程错误。
调用this.model.collection.remove( this.model );
时,在模型上调用了remove事件,该事件绑定到dispose
方法,该方法删除了对模型的任何本地引用。因此,对模型的引用丢失了。