Ember 数据快照以及如何检测变化?

Ember Data Snapshot and how to detect changes?

我正在写我自己的adapter/serializer。为了将数据发送到后端,我必须检测 DS.Snapshot 和原始 Ember 对象的变化。对于普通属性,可以 changedAttributes() 但我没有找到检测 hasMany 关系变化的方法。

我可以使用 snapshot.hasMany('foo') 和 changedAttributes() 检测新关系。但是这种方法无法找到已删除的关系。

Ember (2.x) 不跟踪关系(例如 hasMany),但可以使用 ember-addon ember-data-change-tracker几乎可以做到。它允许您(自动)保存关系的当前状态,之后您可以将此 'saved'(=旧状态)与当前状态进行比较。你必须自己找到不同之处。来自适配器的一个简单示例:

snapshot.hasMany('users').length <-- current count of relations
snapshot.record.savedTrackerValue('users').length <-- old count of relations

感谢 Christoper 为我指明了正确的方向。