私の Ext JS 4.1 アプリケーションには、以下に関連付けられたモデルProjectがあります。belongsToProjectCategory
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']
});
プロジェクトは Direct プロキシ経由で読み取られ、ProjectCategory の詳細は応答にネストされた値として含まれます (主に表示目的のため)。ストアをロードすると、関連付けられたデータが正しく読み取らProjectCategoryれ、カスタム レンダラーを介してグリッド内の のタイトルを読み取ることができます。
renderer: function(v, p, rec) {
return v ? rec.getCategory().get('title') : '';
}
ただし、 を使用して親Projectレコードを編集および保存する場合、関連するレコードのフィールドは、 「ネイティブ」フィールドform.updateRecord(record)とは異なり、サーバーの応答からの値で更新されません。Projectしたがって、 を変更すると、サーバーが新しいカテゴリを含むproject_category_id正しくネストされたフィールドで応答しても、古いカテゴリが返されます。ProjectCategorygetCategory
これがサーバーの応答から更新されないのはなぜですか?更新するにはどうすればよいですか?
writeストアのリスナーで、レコードと返された関連付けデータにアクセスできることがわかりました。しかし、他のイベントをトリガーせずにレコードをサイレントに更新する方法がわかりません。