我想在Backbone Collection的初始化函数中重置集合。
以下是我的收藏
var RatesCollection = Backbone.Collection.extend({
model: RatesModel,
initialize: function(res){
var newData = [];
var rateData = [];
this.columns = _.keys(res);
_.each(res, function(val, key){
// console.log(key);
// console.log(val);
newData.push(_.map(val,function(value){
return [key, value];
}));
});
this.data = _.zip.apply(_,_.values(newData));
_.each(this.data,function(val){
rateData.push(_.object(val));
});
this.reset( rateData,{silent: true});
console.log(rateData);
}
});
这是当前的jsfiddle http://jsfiddle.net/GswXR/14/。
我尝试了另一种方法,为initialize函数中的语句定义一个新函数 getCollection ,并按预期工作。(工作jsfiddle http://jsfiddle.net/GswXR/12/)。
更新
我尝试使用解析
如下图所示
initialize: function(options){
this.parse(options);
},
parse: function(res){
var newData = [];
var rateData = [];
this.columns = _.keys(res);
_.each(res, function(val, key){
// console.log(key);
// console.log(val);
newData.push(_.map(val,function(value){
return [key, value];
}));
});
this.data = _.zip.apply(_,_.values(newData));
_.each(this.data,function(val){
rateData.push(new RatesModel(_.object(val)));
});
console.log(rateData);
return rateData;
}
但仍无效