我得到了这个用一些动作函数排序的表:
<thead>
<tr>
<th>
<span {{action 'sortNums'}} {{bindAttr class=":carrot :active :up isActive:active direction"}}></span>
</th>
<th>
<span {{action 'sortNums'}} {{bindAttr class=":carrot isActive:active direction"}}></span>
</th>
</tr>
</thead>
在控制器内部我有动作功能,我想只在被点击的元素上设置方向类,而不是整个事物:
sortNums: function(){
if (this.get('direction') === 'up') {
this.set('direction', 'down');
this.set('sortAscending', true);
} else {
this.set('direction', 'up');
this.set('sortAscending', false);
}
}
我真的不认为这是可能的,我可能不得不使用视图来做到这一点,但只是想知道......
另外,如果我要使用视图,我是否必须查看表中每个<span>
的视图? (我喜欢7)
我不知道如果这是可能的,但如果我可以获得点击元素的DOM节点,我可以用jQuery添加该类。
答案 0 :(得分:1)
要获取DOM元素,您应截取action
中view
的点击,然后将其转发给控制器的函数调用。对于view
,您不需要每个span
的视图,只需捕获包装表的视图上的单击事件。
这样的事情应该有效:
App.TableHeaderSortView = Ember.View.extend({
tagName: 'span',
click: function(event) {
this.get('controller').send('sortNums', event)
},
classNameBindings: [':carrot :active :up isActive:active direction'],
direction: '...'
...
});
App.TheControllerBackingTheViewController = Ember.ArrayController.extend({
actions: {
sortNums: function(event) {
// event available here
}
}
});
<thead>
<tr>
<th>
{{view App.TableHeaderSortView}}
</th>
...
希望它有所帮助。