私のWebアプリケーションでは、左側のテーブルにユーザーリストがあり、右側にユーザー詳細ペインがあります。管理者がテーブル内のユーザーをクリックすると、その詳細が右側に表示されます。
左側にUserListViewとUserRowViewがあり、右側にUserDetailViewがあります。物事は一種の仕事ですが、私は奇妙な行動をしています。左側の一部のユーザーをクリックしてから、そのうちの1つをクリックすると、表示されているすべてのユーザーのJavaScript確認ボックスが連続して表示されます。
以前に表示されたすべてのビューのイベントバインディングが削除されていないようですが、これは正常のようです。UserRowViewで毎回新しいUserDetailViewを実行するべきではありませんか?ビューを維持し、その参照モデルを変更する必要がありますか?新しいビューを作成する前に、現在のビューを追跡して削除する必要がありますか?私はちょっと迷っていて、どんなアイデアでも歓迎します。ありがとうございました !
左側のビューのコードは次のとおりです(行の表示、クリックイベント、右側のビューの作成)
window.UserRowView = Backbone.View.extend({
tagName : "tr",
events : {
"click" : "click",
},
render : function() {
$(this.el).html(ich.bbViewUserTr(this.model.toJSON()));
return this;
},
click : function() {
var view = new UserDetailView({model:this.model})
view.render()
}
})
そして、右側面図のコード(削除ボタン)
window.UserDetailView = Backbone.View.extend({
el : $("#bbBoxUserDetail"),
events : {
"click .delete" : "deleteUser"
},
initialize : function() {
this.model.bind('destroy', function(){this.el.hide()}, this);
},
render : function() {
this.el.html(ich.bbViewUserDetail(this.model.toJSON()));
this.el.show();
},
deleteUser : function() {
if (confirm("Really delete user " + this.model.get("login") + "?"))
this.model.destroy();
return false;
}
})
delete view
ルーターだけではないのですか?