Почему я должен создавать целый близкий прототиптолько для того, чтобы мои события не были привязаны к моему представлению? Разве Backbone не должен просто встроить это? Есть ли способ определить, когда представление удаляется?
Мои магистральные события срабатывают дважды после того, как я ухожу и возвращаюсь к представлению.
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');
},
При первом рендеринге представления раскрывающийся список открывается и закрывается правильно, но при втором рендеринге представления раскрывающийся список интерпретирует каждый щелчок дважды, поэтому, как только он открывается, второй щелчок закрывает его.