我是骨干新手,对使用模型和集合的正确方法感到困惑。
我有两个嵌套模型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);
所以我想知道是否有一些标准模式可以做到这一点。
谢谢。