3

如何获取触发点击事件的目标元素的对象。例如,如果我有一个像这样的模板:

<table>
<tr>
    <th {{action "someAction"}} >Type</th>
</tr>
</table>

在我的控制器中,我定义了相应的操作,例如:

action:{
    someAction : function(){
        //get the th element object 
    }
}

似乎事件对象没有通过,因为我尝试过

action:{
    someAction : function(event){
        //event is undefined!
    }
}

更新:感谢 Márcio 和 Jeremy。我现在有了一个可行的解决方案。我的模板看起来像:

<thead>
        {{#view AS.MyView sortBy="value"}}Value{{/view}}
</thead>

我的观点如下:

AS.MyView = Ember.View.extend({
attributeBindings: ['sortBy'],
classNames: ['sortable'],
tagName: 'th',
click: function(evt) {
    var target = evt.target, self = this;
    this.get('controller').send('setSort',$(target).attr('sortBy'));

    $(target).parent().find('th').removeClass('desc').removeClass('asc');
    $(target).addClass(self.get('controller.sortAscending')?'asc':'desc');
}
});
4

1 回答 1

2

classNameBinding是这个用例的一个很好的选择。

仅供参考,如果您需要处理低级别的浏览器事件,您可以在View层中进行。

http://emberjs.com/guides/views/handling-events/

{{#view App.ClickableView}}
This is a clickable area!
{{/view}}

App.ClickableView = Ember.View.extend({
  click: function(evt) {
    alert("ClickableView was clicked!");
  }
});
于 2013-09-17T02:53:38.063 回答