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