如何将范围传递给回调?
How to pass the scope to the callback?
我有以下代码结构,我试图在成功和错误回调中将 "this" 的范围维护到当前对象。
我尝试过使用 Apply 函数,但我不确定如何在我的用例中使用,这正是我需要帮助的地方。
这是我的代码:
function navigateToDocumentList(record){
var self= this;
var handoutDocumentList=Ext.create('xxx.view.HandoutsDocumentListPanel');
var navigationView = self.getNavigationView();
navigationView.push(handoutDocumentList);
navigationView.getNavigationBar().show();
navigationView.getNavigationBar().setTitle(record.data.name);
var url = intermountain.constants.HANDOUTS_DOCUMENTS_OF_CATEGORY_SERVICE_URL+record.data.name;
self.makeAJAXCallWIthParams(url,
16000,
self.navigateToDocumentListSuccess,
self.navigateToDocumentListError,
self);
}
function makeAJAXCallWithParams(url, timeout, success, error, callbackObj) {
Ext.Viewport.setMasked({
xtype: 'loadmask',
message: 'Loading ...'
});
Ext.Ajax.request({
url: url,
timeout: 5000,
success: success.apply(callbackObj,[]),// I need to know how to pass the function arguments here as earlier I was just calling it by success and now I need to call it using apply function
failure: failure
});
}
如果我需要更好地解释问题,请告诉我。任何输入/提示将不胜感激。
感谢您的宝贵时间!
为了回答你关于参数的问题,Javasctript 中的每个函数都可以通过 arguments
伪参数访问一个包含所有参数的列表:
success: function(){ return success.apply(callbackObj, arguments) }
但是,使用 bind
方法比 apply
或 call
更简单。
success: success.bind(callbackObj),
failure: failure.bind(callbackObj)
我有以下代码结构,我试图在成功和错误回调中将 "this" 的范围维护到当前对象。
我尝试过使用 Apply 函数,但我不确定如何在我的用例中使用,这正是我需要帮助的地方。
这是我的代码:
function navigateToDocumentList(record){
var self= this;
var handoutDocumentList=Ext.create('xxx.view.HandoutsDocumentListPanel');
var navigationView = self.getNavigationView();
navigationView.push(handoutDocumentList);
navigationView.getNavigationBar().show();
navigationView.getNavigationBar().setTitle(record.data.name);
var url = intermountain.constants.HANDOUTS_DOCUMENTS_OF_CATEGORY_SERVICE_URL+record.data.name;
self.makeAJAXCallWIthParams(url,
16000,
self.navigateToDocumentListSuccess,
self.navigateToDocumentListError,
self);
}
function makeAJAXCallWithParams(url, timeout, success, error, callbackObj) {
Ext.Viewport.setMasked({
xtype: 'loadmask',
message: 'Loading ...'
});
Ext.Ajax.request({
url: url,
timeout: 5000,
success: success.apply(callbackObj,[]),// I need to know how to pass the function arguments here as earlier I was just calling it by success and now I need to call it using apply function
failure: failure
});
}
如果我需要更好地解释问题,请告诉我。任何输入/提示将不胜感激。
感谢您的宝贵时间!
为了回答你关于参数的问题,Javasctript 中的每个函数都可以通过 arguments
伪参数访问一个包含所有参数的列表:
success: function(){ return success.apply(callbackObj, arguments) }
但是,使用 bind
方法比 apply
或 call
更简单。
success: success.bind(callbackObj),
failure: failure.bind(callbackObj)