Ember:如何在处理单击时在父元素上分配单击处理程序

时间:2014-10-21 18:11:01

标签: ember.js click event-bubbling

在我看来,我有一个与元素绑定的动作。此操作会更改属性,并且我在视图上有一个方法,该方法会观察属性并对其更改进行操作。然后,此方法将单击处理程序分配给window。我遇到的问题是window上的点击处理程序被初始操作的点击触发了。

我在这里做错了什么?

编辑:

// hbs file
<span class="icon-account" {{action 'showMenu' target="view"}}></span>

// view file
menuShowing: false,

menuShowingHandlers: function() {
  var MENU_CLICK = 'click.AccountMenu';

  if (this.get('menuShowing')) {
    // Close menu if anywhere in window is clicked
    $(window).on(MENU_CLICK, _.bind(function(){
      this.set('menuShowing', false);
    }, this));
    // Don't close menu if menu is clicked
    this.$().on(MENU_CLICK, function(evt) {
      evt.stopPropagation();
    });
  } else {
    // Remove listeners
    $(window).off(MENU_CLICK);
    this.$().off(MENU_CLICK);
  }
}.observes('menuShowing'),

actions: {
  showMenu: function () {
    this.set('menuShowing', true);
  }
}

最初,调用showMenu,将属性设置为true。然后调用menuShowingHandlers,此时,处理程序被分配给window。但是,立即调用window上的处理程序,从而将menuShowing重置为false。

0 个答案:

没有答案