我是骨干的新手,并且对使用模型和集合的正确方法感到困惑。
我在一对多关系中有两个嵌套模型Parent
和child
。正如骨干建议的那样,我有以下代码:
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);
所以我想知道是否有一些标准模式可以做到这一点。
感谢。