2010-05-20 33 views
0

我似乎找不到一種方法使django-dajaxice在其作出初始調用的相同作用域對象內部具有回調。如何使Dajax回調到作用域對象中

MyViewport = Ext.extend(MyViewportUi, { 
    initComponent: function() { 
     MyViewport.superclass.initComponent.call(this); 
    }, 

    LoadRecordsCallback: function(data){ 
     if(data!='DAJAXICE_EXCEPTION') 
     { alert(data); } 
     else 
     { alert('DAJAXICE_EXCEPTION'); } 
    }, 

    LoadRecords: function(){ 
     Dajaxice.Console.GetUserRecords(this.LoadRecordsCallback); 
    } 
}); 

var blah = new MyViewport(); 
blah.LoadRecords(); 

我在Django上,就像django-dajaxice的調用語法。我使用Extjs 3.2並嘗試傳遞一個Ext.createCallback,但Dajax的返回eval似乎只需要一個字符串用於回調。

回答

1

BozoJoe,這應該工作。

MyViewport = Ext.extend(MyViewportUi, { 
    initComponent: function() { 
     MyViewport.superclass.initComponent.call(this); 
    }, 

    LoadRecordsCallback: function(data){ 
     if(data!='DAJAXICE_EXCEPTION') 
     { alert(data); } 
     else 
     { alert('DAJAXICE_EXCEPTION'); } 
    }, 

    LoadRecords: function(){ 
     Dajaxice.Console.GetUserRecords('blah.LoadRecordsCallback'); 
    } 
}); 

var blah = new MyViewport(); 
blah.LoadRecords(); 
+0

豪爾赫我相信通過這一點你已經拉上了我的改變,這使我的要求。非常感謝!在那裏,我想給你信貸的答案,給予發佈的答案不是我所需要的。 – BozoJoe 2011-03-14 07:43:04

0

我根本不熟悉django,但我想我理解這個問題。

看來,API要求您傳遞一個字符串作爲函數調用將被評估,所以您必須傳遞函數的名稱,而不是函數本身。

這反過來意味着它必須是一個在窗口範圍內有意義的名稱 - 既可以是在Ext類之外定義的函數(例如「myGlobalFunction」),也可以是可以訪問的Ext類的成員函數一個變量(例如「window.blah.LoadRecordsCallback」)

相關問題