別のビューに追加できる単純なポップオーバー モジュールがあります。このポップオーバーは、自分のビューの外でクリックまたはマウスアップをリッスンする必要があります。
function(app) {
var Popover = app.module();
Popover.Views.Default = Backbone.View.extend({
className: 'popover',
initialize: function(options) {
_.bindAll(this, 'hideOutsideClick');
this.on('toggle', this.toggle);
this.render();
},
afterRender: function() {
//watch for clicks outside current view
$('html').on('click', this.hideOutsideClick);
},
remove: function() {
//cleanup
this.hide();
$('html').off('click', this.hideOutsideClick); this.$el.remove();
},
show: function() {
this.visible = true; this.$el.show();
},
hide: function() {
this.$el.hide(); this.visible = false;
},
toggle: function() {
this.visible ? this.hide() : this.show();
},
hideOutsideClick: function(event){
//on any click this is fired 4 times!!!
}
});
return Popover;
});
私の問題は、クリックが実行されたときに hideOutsideCallback が 4 回発生することです。なんで?