在我的Ext JS 4.1應用程序,我有一個belongsTo
關聯模型Project
到ProjectCategory
:通過代理更新嵌套JSON時未關聯相關模型?
Ext.define('MyApp.model.Project', {
extend: 'Ext.data.Model',
fields: ['id', 'project_category_id', 'title'],
belongsTo: {
model: 'MyApp.model.ProjectCategory',
associationKey: 'ProjectCategory',
getterName: 'getCategory'
}
// ...
});
Ext.define('MyApp.model.ProjectCategory', {
extend: 'Ext.data.Model',
fields: ['id', 'title']
});
該項目通過直接代理閱讀,ProjectCategory細節包括在響應嵌套值(主要是用於顯示目的)。當加載一個店,相關的數據被正確讀取,並且我可以通過自定義渲染器讀取ProjectCategory
的中網格標題:
renderer: function(v, p, rec) {
return v ? rec.getCategory().get('title') : '';
}
然而,編輯和保存,通過母公司Project
記錄時form.updateRecord(record)
,與Project
的「本地」字段不同,相關記錄的字段不會使用服務器響應中的值更新。因此,在更改project_category_id
時,即使服務器將使用包含新類別的正確嵌套的ProjectCategory
字段進行響應,但getCategory
仍將返回舊類別。
爲什麼不是從服務器響應更新,我需要做些什麼來更新它?
我已經發現在商店的write
監聽器中,我可以訪問記錄和返回的關聯數據。但我無法弄清楚如何在不觸發任何其他事件的情況下更新記錄。
當我嘗試通過關聯getterName從子記錄訪問父記錄時,我遇到了同樣的問題。我注意到父商店中的實際記錄與關聯檢索到的記錄不同。當我檢查每條記錄的ext id屬性(通過'record.id')時,它們顯示不同的值。我確信這有一個原因,但我不明白的是爲什麼所有的屬性(除了'id')可能不匹配。它確實應該是自動的。 – globetrotter 2013-12-06 22:16:41