2015-04-17 113 views
1

我有以下代码结构,并且我试图在成功和错误回调中将“this”的范围保持为当前对象。如何将范围传递给回调?

我曾尝试使用应用函数,但我不确定如何在我的用例中使用,这就是我需要一些帮助的地方。

这里是我的代码:

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 

      }); 
} 

请让我知道如果我需要更好地解释这个问题。任何输入/提示将不胜感激。

谢谢你的时间!

+0

范围与变量访问有关,上下文与'this'的值有关。这个问题更多的是关于上下文。 – colecmc

回答

1

要获得关于争论的问题,在Javasctript每个功能可以通过arguments伪参数访问其所有参数列表:

success: function(){ return success.apply(callbackObj, arguments) } 

然而,它的将是更简单的使用bind方法来代替applycall

success: success.bind(callbackObj), 
failure: failure.bind(callbackObj) 
+0

非常感谢!这工作像一个魅力。 – userx

相关问题