2015-09-26 128 views
3

我想創建一個Backbone模型並將另一個模型的集合存儲到其屬性中。所以,有父母和孩子的模型。每個父節點都有一個或多個在其屬性中作爲數組存儲的子節點。Backbone模型中的集合

JSON會是這樣的。

Parent = { 
    name: 'Name', 
    age: 'Age', 
    children: 
     [{name: 'Name', age: 'Age'}, 
     {name: 'Name', age: 'Age'}, 
     {name: 'Name', age: 'Age'}] 
} 

我試圖創建模型和插入其中一個,但仍然沒有解決方案。我不想使用解析或其他服務器的東西。

那麼,有沒有解決方案或更好的方法來實現呢?

+0

你必須重寫父模型的'parse()'方法。或者使用像'Backbone.relational'這樣的庫。 – moonwave99

+0

其實,我不會做服務器的事情,因爲這個應用程序將只顯示DOM中的輸出,而不是數據庫。 – mere

+1

你不必做任何服務器事情,你可以重寫'.fetch()'來消耗任何源代碼[甚至一個香草對象]和'.parse()'。否則,首先創建模型,然後創建集合,然後創建'yourModel.set('attributeName',collection)',這樣你就可以走了^^ – moonwave99

回答

4

據我所知,你想創建一個模型與這個數據,如果有children裏面的模型,使內部相同的模型集合。

var Person = Backbone.Model.extend({ 
    initialize: function(){ 
     this.set('children', new Persons(this.get('children'))); 
    } 
}); 

var Persons = Backbone.Collection.extend({ 
    model: Person 
}); 
  1. 在創建模型 - initialize: function() {...}
  2. 讓我們把我們的孩子陣列 - this.get('children')
  3. 並做好收集 - new Persons(...)
  4. 採集將創建模型本身
  5. ,把一切回來 - this.set('children', ...);

JSFiddle - 在控制檯中運行並查看結果。

+0

它確實有效,但是我的計劃實際上是將每個子模型嵌入父項子模型已創建。我不一次寫下所有的孩子。 – mere

+0

你可以通過'var newChild = new Person({})'創建新的孩子,然後將它添加到你的父母'parent.get('children')。add(newChild)'其中'parent'存在的位置此刻的人。 – antejan

+0

它的工作原理!謝謝 :) – mere

相關問題