2

假设我有关系 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/来说明我的观点。两行被注释掉,以查看叶列表更改如何删除它们。

4

0 回答 0