获取动作目标元素的余烬 [英] get action target element in ember

查看:88
本文介绍了获取动作目标元素的余烬的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

How can I get the target element's object on which a click event was fired. For eg, if I have a template like:

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

在我的控制器中我有相应的动作定义如下:

and in my controller I have corresponding action defined like:

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

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

It seems like event object is not passed, because I had tried

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

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

UPDATE : Thanks Márcio and Jeremy. I've now got a working solution. My template looks like:

<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');
}
});


推荐答案

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

classNameBinding is a great option for this use case.

仅供参考,如果您需要处理低级浏览器事件,可以在查看层。

Just for reference, if you need to deal with low level browser events, you can do that in the View layer.

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!");
  }
});

这篇关于获取动作目标元素的余烬的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆