2013-09-16 6 views
3

Как я могу получить объект целевого элемента, на котором был запущен событие клика. Для, например, если у меня есть шаблон, как:получить элемент действия цели в ember

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

Можете ли вы объяснить, что вы хотите сделать с элементом, может быть, есть другой способ сделать это. Например, если речь идет о стилизации, это можно сделать с помощью классаNameBinding ... –

+0

Вы правы, я хотел установить стиль на th-элемент на основе щелчка. Я хотел бы выполнить сортировку таблицы сортировки так, чтобы, когда пользователь нажимал на какой столбец и какой порядок, я хотел изменить стиль. Я дам view classNameBinding попытку. Благодарю. –

ответ

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!"); 
    } 
}); 
Смежные вопросы