私のアプリケーションでは、同じモデルを共有する 2 つのビューのケースがあります。
モデルを介してコレクションにアクセスし、コレクションからモデルを削除すると問題が発生します。this.model.collection.remove(this.model)
問題は、ビューの参照を呼び出した後this.model
が未定義であることです。
削除する前にイベントのバインドを解除しない理由はmySecondView
、DOM からそれ自体を削除するために、remove イベントについて知る必要があるからです。
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
助言がありますか?