@ノニノ
私はそれを行う方法を知っていると思いますが、同様の問題も抱えています。関連データを提供するための関連付けを実際に取得することはできません。とにかく、私がインターネットで見つけたものから、このようなカスタムライターを作成するか、デフォルトのライターで getRecordData: function(record,operation)
これが私のカスタムライターです
Ext.define('Wakanda.writer', {
extend: 'Ext.data.writer.Json',
// alternateClassName: 'SimplyFundraising.data.WakandaWriter',
alias: 'writer.wakanda',
writeAllFields: false,
getRecordData: function(record,operation) {
debugger;
Ext.apply(record.data,record.getAssociatedData());
debugger;
var isPhantom = record.phantom === true,
writeAll = this.writeAllFields || isPhantom,
nameProperty = this.nameProperty,
fields = record.fields,
data = {},
changes,
name,
field,
key;
if (writeAll) {
// console.log("getRecordData1", this, arguments);
fields.each(function(field){
if (field.persist) {
debugger;
name = field[nameProperty] || field.name;
data[name] = record.get(field.name);
} else {
}
});
} else {
changes = record.getChanges();
debugger;
// console.log("getRecordData2", this, arguments, changes);
for (key in changes) {
if (changes.hasOwnProperty(key)) {
field = fields.get(key);
name = field[nameProperty] || field.name;
data[name] = changes[key];
}
}
if (!isPhantom) {
debugger;
data[record.idProperty] = record.getId();
if(operation.action !== 'destroy'){
data[record.stampProperty] = record.get(record.stampProperty);
}
}
}
return {'__ENTITIES': [data]};
}
});
私が考える鍵は、ステートメント Ext.apply(record.data,record.getAssociatedData()); がある getRecordData にあります。record.getAssociatedData が実際にデータを返す場合、Ext.apply ステートメントは現在の record.data と record.getAssociatedData を 1 つの json ファイルにマージします。少なくともこれが起こることを願っています。アソシエーションを正しく設定するまでテストできません。
これが役に立てば幸いです、ダン
getRecordData: function(record,operation) {
debugger;
Ext.apply(record.data,record.getAssociatedData());
debugger;