Javascript 余烬钩回叫

Javascript 余烬钩回叫,javascript,ember.js,Javascript,Ember.js,我举了以下例子: 路由操作的思想来自@rwjblue 点击按钮触发应用程序路由上的delete操作。我将函数作为参数发送到delete。这应该在删除之前运行。到目前为止,很好,beforeDelete被调用,现在实际的删除应该发生了。我将performDelete函数作为参数传递,然后调用它 问题 调用performDelete时,它将丢失其上下文此指向窗口。我无法调用this.get('foo')当您在args.beforeDelete(this.get('performDelete'))中

我举了以下例子:

路由操作的思想来自@rwjblue

点击按钮触发应用程序路由上的
delete
操作。我将函数作为参数发送到
delete
。这应该在删除之前运行。到目前为止,很好,
beforeDelete
被调用,现在实际的删除应该发生了。我将
performDelete
函数作为参数传递,然后调用它

问题


调用
performDelete
时,它将丢失其上下文<代码>此
指向
窗口
。我无法调用
this.get('foo')
当您在
args.beforeDelete(this.get('performDelete'))中传递函数时,此
将丢失
删除操作中。要解决此问题并确保在正确的上下文中调用了
performDelete
,可以执行以下两种操作之一:

args.beforeDelete(this.performDelete.bind(this));
或:


次要的一点是,尽管
this.get('methodName')
可以工作,但更常见的情况是只说
this.methodName
args.beforeDelete(() => { this.performDelete(); });