2015-09-26 83 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

相关问题