【问题标题】:Best practice for backbonejs nested models and collections主干js嵌套模型和集合的最佳实践
【发布时间】:2013-04-09 21:08:45
【问题描述】:

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

我有两个嵌套模型 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);

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

谢谢。

【问题讨论】:

  • 使用骨干关系
  • @mpm 太棒了!这正是我要找的!谢谢。

标签: backbone.js


【解决方案1】:

管理嵌套模型的关系。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    相关资源
    最近更新 更多