我正在使用Ember v1.2.0
以及Handlebars v1.0.0
和jQuery 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
的预期行为?