イベントを自分のビューからバインド解除するだけの理由で、close prototype全体を作成する必要があるのはなぜですか?バックボーンでそれを構築してはいけませんか?ビューが削除されたときを検出する方法はありますか?バックボーンイベントを2回実行する
私のバックボーンイベントは、離れてナビゲートしてビューに戻ると2回発生します。
events : {
"click #userDropdownButton > a" : "toggleUserDropdownMenu",
"click" : "hideUserDropdownMenuIfClickedOutside"
},
el : "body",
initialize : function() {
this.render();
},
// Shows/hides the user dropdown menu
toggleUserDropdownMenu : function() {
if(!this.$el.find('#userDropdownButton > ul').is(':visible')) {
this.showUserDropdownMenu();
} else {
this.hideUserDropdownMenu();
}
return false;
},
showUserDropdownMenu : function() {
this.$el.find('#userDropdownButton').addClass('hover');
this.$el.find('#userDropdownButton > ul').show();
this.$el.find('#userDropdownButton > a .arrow-down').removeClass('arrow-down').addClass('arrow-up');
},
hideUserDropdownMenuIfClickedOutside : function() {
if(this.$el.find('#userDropdownButton > ul').is(':visible')) {
this.hideUserDropdownMenu();
}
},
hideUserDropdownMenu : function() {
this.$el.find('#userDropdownButton').removeClass('hover');
this.$el.find('#userDropdownButton > ul').hide();
this.$el.find('#userDropdownButton > a .arrow-up').removeClass('arrow-up').addClass('arrow-down');
},
ビューがレンダリングされる最初の時間は、ドロップダウンが開き、適切に閉じますが、ビューがレンダリングされる二回目には、ドロップダウンは、すべて、とすぐにそれが開くと第2のクリックが閉じを二回クリックし、そう解釈それ。
私たちがあなたがしていたことを知っていたら、あなたが間違っていることをおそらく伝えることができました。見るべきコードがあれば... –
@muistooshortはコードを追加しました:フィードバックのためにありがとう – Garrett
私はこれをhttp://stackoverflow.com/q/10966440/479863の複製と呼びますが、少なくとも答えはほぼ同じです。 –