Javascript 从集合中删除模型将删除视图';s参考
在我的应用程序中,两个视图共享同一个模型 当我通过模型访问集合并从集合中删除模型时遇到问题。问题是调用Javascript 从集合中删除模型将删除视图';s参考,javascript,backbone.js,Javascript,Backbone.js,在我的应用程序中,两个视图共享同一个模型 当我通过模型访问集合并从集合中删除模型时遇到问题。问题是调用this.model.collection.remove(this.model)后,视图的引用this.model未定义 我没有在删除之前解除事件绑定的原因是,我需要mySecondView能够了解删除事件,以便将其自身从DOM中删除 MyView = Backbone.View.extend({ events : { 'click .delete' : deleteM
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
有什么建议吗?这个问题是编程错误
调用
this.model.collection.remove(this.model)时
对绑定到dispose
方法的模型调用了删除事件,该方法删除了对模型的任何本地引用。因此,对模型的引用丢失。当您创建一个模型时,它会触发一个destroy
事件,该事件会冒泡到集合中,因此您不需要调用this.model.collection.remove(this.model)代码>这是一个新模型,它在服务器上不存在,只需要在客户端删除。我在调用this.destroy
而不是this.dispose的地方纠正了一个打字错误。