1

我是骨干新手,对使用模型和集合的正确方法感到困惑。

我有两个嵌套模型Parent并且child是一对多的关系。正如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);

所以我想知道是否有一些标准模式可以做到这一点。

谢谢。

4

1 回答 1

2

管理嵌套模型的关系。

https://github.com/PaulUithol/Backbone-relational

于 2013-04-10T06:49:48.183 回答