假设我有关系 Parent (1) <-> Child (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')
});
在某个时候,一个 Zik.Node(id=2) 子 Zik.Leaf 改变了与另一个父 Zik.Node(id = 1) 的关系。现在,如果 Zik.Node 观察到它的叶子,它会收到通知,但叶子列表是相同的。
一种选择是从以前的父级中删除叶子并将其添加到新的父级:
oldParent.removeObject(leaf;
newParent.get('leafs').pushObject(leaf)
但这似乎不对。也许还有其他一些更自动的方法可以让这个工作。我创建了一个小提琴http://jsfiddle.net/kristaps_petersons/6g22X/11/来说明我的观点。两行被注释掉,以查看叶列表更改如何删除它们。