2010-08-03 112 views
0

我正在使用Ext.Direct模塊進行一系列Ajax調用。我想在每次撥打電話時保存一些數據,然後將每個返回值與正確的呼叫進行匹配。Ext.Direct:將返回值與調用匹配

在服務器調用中,Ext在JSON數據包中提供tid屬性(可預設的「事務標識符」),它使用匹配返回值來調用。問題是,似乎沒有任何記錄方式爲我的客戶端JavaScript捕獲tid的傳出呼叫。

以下方法有效,但它使用未記錄的Ext.Direct.TID屬性。假設my.namespace.my_action.my_method是已被正確配置的Ext.Direct API調用:

// Set up a global object in which to store data about pending calls 
pendingCalls = {}; 

. 
. 
. 

// Make a call to the server-side routine, and queue the data 
my.namespace.my_action.my_method(call_data); 
pendingCalls[ Ext.Direct.TID ] = call_data; 

. 
. 
. 
//The handler of the Ext.direct.Provider's "data" event 
onData = function(provider, data) { 
    if data.type == "rpc" { 
     // Recover the original call_data 
     call_data = pendingCalls[ data.tid ]; 

     // Do something with call_data and data.result 
    } 
} 

我不喜歡使用Ext.Direct類的私有內部。使用Ext.Direct的公共接口有沒有官方的方式來做到這一點?

回答

0

我在問題中發佈的解決方案的工作原理,即使它沒有記錄。而且,由於沒有人公佈另一種方式,我會堅持下去。

0

它可能沒有你問的時候存在,但如果任何人想知道:

當您的ExtDirect電話,你傳遞參數,回調,範圍和選擇。

將您的call_data放入選項中,並在每個響應中將其取回。