2010-02-14 26 views
0

我一直堅持這個問題一段時間Ext.Data.Connection請求結果不在網格上呈現?

我的JSON店領域需要找回一些更多的信息:

{ name: "ExpirationDate", convert: convertDate }, 
{ name: "AffectedObject", convert: GetValue }, 

日期方法工作正常,但是從的GetValue結果被渲染在即使代碼工作並返回正確的值(有或沒有JSON)電網:

function GetValue(v) { 
    var conn = new Ext.data.Connection(); 
    conn.request({ 
     url: 'test/GetObjectByID', 
     method: 'POST', 
     params: { id: v }, 
     scriptTag: true, 
     success: function (response) { 
      console.log(response.responseText); 
      ReturnResult(response.responseText); 
     }, 
     failure: function() { 
      Ext.Msg.alert('Status', 'Something went wrong'); 
     } 
    }); 


function ReturnResult(str) { 
    return Ext.util.JSON.decode(str.toString()); 
} 

任何想法,爲什麼結果不是沒有showi NG?

回答

0

'convert'屬性期望立即返回值。您的GetValue函數發出異步請求,然後立即返回任何內容。在請求完成後,在將來的某個任意點調用'success'函數,但它不再連接到原始調用,所以它返回的任何值都是沒有意義的。

儘管您可以通過將Ext.data.Connection的使用替換爲手動構建的同步請求來實現它,但我建議重新考慮您獲取此數據的機制。對數據存儲區中的每個記錄發出單獨的請求並不理想。

最好的解決方案是將附加數據放入服務器端,並將其包含在商店代理初始請求的響應中。如果無法完成,那麼您可以嘗試聆聽商店的「加載」事件,並使用單個請求對所有加載的記錄執行轉換。您需要將商店中讀取的任何網格或其他視圖配置爲在轉換請求完成之前顯示虛擬文本以代替丟失的數據。

+0

謝謝貓頭鷹, 欣賞你的答案。我現在明白如何使用Connection,認爲這是Store配置問題。我的商店JSON實際上可以包含所有的值。 這是我的第一個大項目,也是我第一次與Ext合作,但我想知道是否因缺乏支持而做出正確的決定。 – safhac 2010-02-15 07:39:45