我正在升级一个为顶级application. hbs
自定义Ember.View
的应用程序。在那里,我有一个事件处理程序,需要访问传入的event
对象:
ApplicationView = Ember.View.extend({
click(event) {
// Need event here.
}
});
现在Ember. View
已被弃用,我不确定如何替换此逻辑。
我可以在某个div中添加一个操作处理程序,以捕获application. hbs
中感兴趣的事件:
<div {{action "topLevelClick"}}>
...
</div>
但是,尽管这会触发,但我无法访问事件
对象。
你觉得怎么处理这件事?
声明为DOM事件处理程序的操作会传递事件:
{{!-- application/template.hbs --}}
<div onclick={{action 'topLevelClick'}}>Click Me</div>
// application/controller.js
actions: {
topLevelClick(event) {
console.log('topLevelClick', event);
}
}
这适用于Ember 1.13.13;我还没有尝试过1.13.11,尽管它通常也支持这些类型的事件处理程序。
默认情况下,操作处理程序接收事件侦听器的第一个参数,即浏览器传递给处理程序的事件对象。因此,在您的操作中,您可以将事件作为第一个参数。假设在您的应用程序控制器中,您的操作为:
actions: {
topLevelClick: function(event){
console.log(event);
}
}
这将在控制台上打印实际的浏览器事件。
希望这有帮助。