2014-02-12 57 views
1

我有一個可編輯的網格,其中包含商店+模型+ REST代理。
獲取,更新和刪除是沒有問題的,但如果我這樣做:創建後商店無法獲得新ID

store.insert(0, {}); 
cellEditing.startEditByPosition({ 
    row: 0, 
    column: 1 
}); 

響應服務器具有:

{ 
"success":true, 
"results":0, 
"root":"data", 
"message":null, 
"data":{"TerritoryUserPK":"7f064ddd-d5c9-47ae-94cc-29da14d27962"}, 
"debug":null 
} 

其中 「TerritoryUserPK」 是模型的idProperty。
我現在預計商店將使用這個id作爲新對象,但它仍然是「ext-record-1」。

服務器響應應該如何,所以Ext存儲除了新的ID?
讀者是這樣的:

reader: { 
    type: 'json', 
    root: 'data', 
    messageProperty: 'message', 
    totalProperty: 'results' 
} 

回答

1

發現問題,store.load()獲取包含元數據的對象,以便將reader的根屬性設置爲"rows"。在POST請求之後,服務器用沒有元數據的對象和"data"屬性中的數據進行響應。讀者記得最後一個根屬性,並將搜索"rows"並找不到該屬性。

因此,請務必瞭解由元數據設置的值。

0

嘗試在你的模型設置clientIdProperty,並返回由分機生成的ID回數據...

例如,在你的模型:

clientIdProperty: 'clientId' 

在你的迴應:

data: [{id: 123, clientId: 'ext-record-1', ...}] 

我不記得客戶端ID是否被髮送到配置爲idProperty(我認爲是)或clientIdProperty的服務器...檢查瀏覽器請求以確保!

+0

沒有幫助:如果保存多個記錄,Ext僅將clientIdProperty發送到服務器。 我嘗試調試整個過程,但我錯過了將回調添加到XHR請求的地方,其中Ext應該等待新的ID ... –

+1

狂野的猜測常常會丟失......如果我理解了您最後的評論,你說在請求離開時你丟失了執行的軌道,對吧?在這種情況下,您的響應會返回到[http://docs.sencha.com/extjs/4.2.0/source/Server.html#Ext-data-proxy-Server-method-processResponse](processResponse)方法代理人。所以你可以在那裏放置一個斷點並繼續進行調試。我認爲這將在讀者中解決......祝你好運! – rixo