backbonejs嵌套模型和集合的最佳实践

时间:2013-04-09 21:08:45

标签: backbone.js

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

我在一对多关系中有两个嵌套模型Parentchild。正如骨干建议的那样,我有以下代码:

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);

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

感谢。

1 个答案:

答案 0 :(得分:2)

管理嵌套模型的关系。

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