gpt4 book ai didi

backbone.js - 特定类型的Backbone.Js集合

转载 作者:行者123 更新时间:2023-12-04 13:54:40 24 4
gpt4 key购买 nike

我有一个称为History的BackboneJS集合,它可以包含几个Backbone JS模型(它从从Backbone.Model扩展的HistoryItem扩展),我试图找到一种在加载时重新创建此模型的方法,不幸的是,似乎BackboneJS集合只能指定在特定型号上,例如

HistoryCollection = Backbone.Model.extend({
model: app.models.HistoryItem
})

我真正需要做的是确定每种类型的位置,这是我想做的
 HistoryCollection = Backbone.Model.extend({   
model: function(item) {
return app.models[item.type]; } })

在 fork Backbone实现之前有什么想法吗? (即可以采用功能的收集模型属性)

最佳答案

在firebug中玩耍..提出了一种方法,您可以重写collection的parse方法,而不用指定模型。您的解析实现基本上变成了一个简单的工厂,用于用所需的模型填充集合:

var BaseModel  = Backbone.Model.extend({
meth: function(){ return 'Base method'; },
});

var SubModel = BaseModel.extend({
meth: function(){ return 'Sub1 method'; }
});

var SubModel2 = BaseModel.extend({
meth: function(){ return 'Sub2 method'; }
});

var ModelCollection = Backbone.Collection.extend({
parse: function(data){
var self = this;
data.forEach(function(item){
switch(item.type){
case 1:
self.add(new SubModel(data));
break;
case 2:
self.add(new SubModel2(data));
break;
default:
self.add(new BaseModel(data))
}
});
}
});

//Example Use
x = new ModelCollection;
x.parse([{type: 1},{type: 2}, {type: 99}]);
x.map(function(e){ return e.meth();});

关于backbone.js - 特定类型的Backbone.Js集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6061445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com