1

別のビューに追加できる単純なポップオーバー モジュールがあります。このポップオーバーは、自分のビューの外でクリックまたはマウスアップをリッスンする必要があります。

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 回発生することです。なんで?

4

3 に答える 3

0

ほとんどの問題を解決し、ここで動作するポップオーバー モジュールを提供しますhttp://pastebin.com/HF5gSUKQ

現在のビュー以外のクリックをリッスンするには:

_.bindAll(this, 'hideOutsideClick');
 $('html').on('click', this.hideOutsideClick);
于 2013-06-30T10:30:56.830 に答える