2013-04-09 92 views
1

我是新來的骨幹,並混淆了使用模型和集合的正確方法。backbonejs嵌套模型和集合的最佳實踐

我有兩個嵌套模型Parentchild在一對多關係。作爲backbonejs建議,我有以下代碼:

var Child = Backbone.Model.extend({}); 
Child.Collection = Backbone.Collection.extend({}); 

var Parent = Backbone.Model.extend({ 
    initialize: function() { 
    this.children = new Child.Collection; 
    } 
}); 

var ParentView = Backbone.View.extend({ 
    var parent = this.model 
    this.children = parent.children; 
}); 

這工作正常,直到我開始需要通過「服務器ID」編輯單個孩子。 所以我結束了三種解決方案,其中沒有權在我看來:

1,按要求從服務器獲取現有實例的新實例:

var child = getFromServerById(id); 
var parent = parentCollection.get(child.get('parentId')); 
child = parent.children.get(child.id); 

2,通過所有有循環父(當他們的一個以上的祖先,這成爲真的很可怕):

var child; 
var parent = parentCollection.find(function(parent){ 
    child = parent.children.get(childId); 
    return child; 
}); 

3,對於每一個模型創建一個全局緩存。 (這是目前我有去,但它需要我繼續保持globalCache我每次添加/刪除時間對象)

var child = globalCache['child'].get(id); 

所以我想知道,如果有一些標準的模式來做到這一點。

謝謝。

+0

使用骨幹關係 – mpm 2013-04-09 21:11:09

+0

@mpm太棒了!這就是我正在尋找的!謝謝。 – xzhang 2013-04-09 22:23:04

回答