Javascript Ember.js:这是回调函数中的
我正在试图弄清楚如何使用Javascript Ember.js:这是回调函数中的,javascript,ember.js,callback,super,Javascript,Ember.js,Callback,Super,我正在试图弄清楚如何使用this.\u super当从回调调用Ember的object方法时 我知道我可以在调用回调之前分配var\u super=this.\u super,但我不喜欢这样 我想让这个对象在回调中包含适当的\u super方法 我的代码在这里: 你知道怎么修吗 更新: 原来它是在Ember 1.5.0中修复的(@GJK:谢谢你的回答),而我使用的是Ember 1.4.0。extend定义了一个类 App.Utils = Ember.Object.extend({ call
this.\u super
当从回调调用Ember的object方法时
我知道我可以在调用回调之前分配var\u super=this.\u super
,但我不喜欢这样
我想让这个
对象在回调中包含适当的\u super
方法
我的代码在这里:
你知道怎么修吗
更新:
原来它是在Ember 1.5.0中修复的(@GJK:谢谢你的回答),而我使用的是Ember 1.4.0。
extend
定义了一个类
App.Utils = Ember.Object.extend({
callbackMethod: function(callback, ctx) {
callback.call(ctx);
}
});
create
生成类的实例
App.Utils = Ember.Object.create({
callbackMethod: function(callback, ctx) {
callback.call(ctx);
}
});
或
或者避免重写init
App.ApplicationController = Ember.Controller.extend({
doSomething: function() {
new App.MyObject();
}.on('init')
});
在您的jsbin中,我只得到一个错误,即
App.Utils.callbackMethod
未定义,而不是this.\u super
无法工作?是的,我还得到您的代码无法工作。。。因为回调方法是一个实例方法而不是静态方法,所以您需要创建该方法的实例。无论如何,为什么不在init方法的顶部创建一个对this
的引用,并使用var self=this
。然后您仍然可以访问该对象上的所有内容,而不仅仅是超级函数。应该注意的是,如果您计划异步调用this.\u super()
,它将无法工作。老实说,建议您不要重写init
,如果您想在init上做些什么,您应该创建一个方法,并在('init')上附加(下面添加的示例)嗨,谢谢。显然,我在提供的代码中犯了一个错误。我可以做App.Utils.create()
或new App.Utils()
,但这不是重点。正如@GJK所提到的,这个问题似乎是在Ember 1.5.0中修复的。我不明白,1.5是一个突破性的改变,它不会修复您描述的问题。你从来没有异步回过电话。是的,你显然是对的。在所示的示例中,我使用了同步回调。在实际项目中,我有一个异步回调。我不知道这是背后的真正原因。
App.Utils.create().callbackMethod(function() {
this._super();
}, this);
App.ApplicationController = Ember.Controller.extend({
doSomething: function() {
new App.MyObject();
}.on('init')
});