在我的 Ext JS 4.1 应用程序中,我有Project
一个belongsTo
关联到的模型ProjectCategory
:
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
监听器中,我可以访问记录和返回的关联数据。但我不知道如何在不触发任何其他事件的情况下静默更新记录。