Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 既然不推荐使用Ember.View,那么如何访问顶级application.hbs模板中触发的事件的事件对象呢?_Ember.js - Fatal编程技术网

Ember.js 既然不推荐使用Ember.View,那么如何访问顶级application.hbs模板中触发的事件的事件对象呢?

Ember.js 既然不推荐使用Ember.View,那么如何访问顶级application.hbs模板中触发的事件的事件对象呢?,ember.js,Ember.js,我正在升级一个为顶级应用程序.hbs自定义Ember.View的应用程序。我有一个事件处理程序,需要访问传入的事件对象: ApplicationView = Ember.View.extend({ click(event) { // Need event here. } }); 既然Ember.View已被弃用,我不确定如何替换此逻辑 我可以在某个div中添加一个动作处理程序,它将捕获应用程序中感兴趣的事件。hbs: <div {{action "topLevelClic

我正在升级一个为顶级
应用程序.hbs
自定义
Ember.View
的应用程序。我有一个事件处理程序,需要访问传入的
事件
对象:

ApplicationView = Ember.View.extend({
  click(event) {
    // Need event here.
  }
});
既然
Ember.View
已被弃用,我不确定如何替换此逻辑

我可以在某个div中添加一个动作处理程序,它将捕获
应用程序中感兴趣的事件。hbs

<div {{action "topLevelClick"}}>
   ...
</div>

...
但是,尽管这会触发,但我无法访问
事件
对象


关于如何处理这个问题有什么想法吗?

默认情况下,操作处理程序接收事件侦听器的第一个参数,即浏览器传递给处理程序的事件对象。 因此,在您的操作中,可以将事件作为第一个参数。 假设在应用程序控制器中,您的操作如下:

actions: {
    topLevelClick: function(event){
        console.log(event);
    }
}
这将在控制台上打印实际的浏览器事件


希望这有帮助。

声明为DOM事件处理程序的操作会传递事件:

{{!-- application/template.hbs --}}
<div onclick={{action 'topLevelClick'}}>Click Me</div>

// application/controller.js
actions: {
  topLevelClick(event) {
    console.log('topLevelClick', event);
  }
}
{{!--application/template.hbs-->
点击我
//application/controller.js
行动:{
topLevelClick(事件){
console.log('topLevelClick',事件);
}
}

这项工作于1.13.13日;我还没有尝试过1.13.11,尽管它通常也支持这些类型的事件处理程序。

是的,我在文档中看到了这一点。但至少在我使用的版本中,
1.13.11
,这不起作用。我正在寻找一条过渡路径,同时将我的应用程序升级到2.x。当我添加您描述的操作处理程序时,参数是
undefined
。这是否适用于
1.13.x
?我做错什么了吗?上面的解决方案是针对最新版本的。啊,我没有将其注册为DOM事件处理程序。谢谢它在1.13.11生效。