Ember.js v1.2.0 - Ember.Component没有触发'click'处理程序,为此返回null。$()

时间:2013-11-25 14:33:04

标签: ember.js handlebars.js

我正在使用Ember v1.2.0以及Handlebars v1.0.0jQuery v2.0.2,我开始使用Ember.Component并替换我通过组件创建的一些视图(例如自定义下拉元素) )感觉这是正确的事情,但不幸的是它没有按照我的预期发挥作用。

这是我的Handlebars文件,放在`templates / components / my-dropdown:

<div class="dropdown__header" {{action 'toggle'}}>
    <i {{bind-attr class=view.iconClass}}></i>{{view.displayText}}
</div>
<div class="dropdown__caret"></div>
<ul class="dropdown__body">
  {{yield}}
</ul>

这是相应的Ember.Component类:

App.MyDropdownComponent = Ember.Component.extend({
  classNames: 'dropdown'.w(),

  toggleList: function () {
    //var $this = this.$(); // returns null (!!!)
    var $this = this.$('.' + this.get('classNames').join(' .')); // returns the expected object
    if($this.hasClass('open')) {
      $this.removeClass('open');
    } else {
      $this.addClass('open');
    }
    // Note: I can't work with classNameBindings and toggleProperty() because the classes
    // could also be accessed through other code...
  },

  click: function (event) {
    alert('heureka!'); // never fired!
  },

  actions: {
    toggle: function () {
      this.toggleList(); // fired as expected
    }
  }
});

Ember.Component预期行为

0 个答案:

没有答案