ストアは、特別なオブジェクトとの関係の変化を追跡します。次のようなリレーションシップの変更オブジェクトをストアに要求できます。
store.relationshipChangeFor(child.get('clientId'), belongsToAssociationName);
変更が行われなかった場合、何も返されません。
しかし、それを行う必要はおそらくないでしょう。リレーショナル データ ストアの場合、子レコードはその属している関連付けを永続化する責任があります。作成/更新が成功すると、それらのすべての関係を盲目的に解決済みとしてマークすることができ、ストアはそれらのいくつかが実際にダーティでなくても気にしません。
DS.RESTAdapter
実際、それはまさに今のことです:
DS.RESTAdapter = DS.Adapter.extend({
// ...
didSaveRecord: function(store, record, hash) {
record.eachAssociation(function(name, meta) {
if (meta.kind === 'belongsTo') {
store.didUpdateRelationship(record, name);
}
});
store.didSaveRecord(record, hash);
}
// ...
});
関係を解決済みとしてマークする準備ができていると判断した場合は、いつでもどこでも を呼び出すだけstore.didUpdateRelationship(child, belongsToAssociationName)
です。
そうは言っても、本当の秘訣は関係を解決済みとしてマークすることではなく (それは既に実装されているため)、親が作成されるまで子の保存を遅らせることです。
私たちは実際にそれを行うプル リクエストを送信しました。それが私たちを助けているのと同じくらいあなたを助けるなら、私たちはリクエストに対するいくらかのサポートに感謝します.