親(1)<->子(0..n)と対応するモデルの関係があるとします
Zik.Node = DS.Model.extend({
id : DS.attr('number'),
name : DS.attr('string'),
leafs : DS.hasMany('Zik.Leaf', {key : 'leaf_ids'})
});
Zik.Leaf = DS.Model.extend({
id : DS.attr('number'),
name : DS.attr('string'),
node : DS.belongsTo('Zik.Node')
});
ある時点で、1つのZik.Node(id = 2)子Zik.Leafは、別の親Zik.Node(id = 1)との関係を変更します。これで、Zik.Nodeがそのリーフを監視すると通知が届きますが、リーフのリストは同じです。
1つのオプションは、前の親からリーフを削除し、それを新しい親に追加することです。
oldParent.removeObject(leaf;
newParent.get('leafs').pushObject(leaf)
しかし、それは正しくないようです。たぶん、これを機能させるためのもっと自動化された方法がいくつかあります。私の主張を説明するために、フィドルhttp://jsfiddle.net/kristaps_petersons/6g22X/11/を作成しました。リーフリストの変更によってそれらがどのように削除されるかを確認するために、2行がコメント化されています。