我有一个数组定义为:
this.noOfHouseHold = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20"];
我正在尝试将其转换为Backbone Collection:
var adultListCollection = new Backbone.Collection(this.noOfHouseHold);
它给了我列表但是对于2位数字,它显示如下:
attributes: Object
0: "1"
1: "1"
我无法理解这里出了什么问题,或者我将数组转换为集合的方式是错误的。请建议。提前谢谢!
答案 0 :(得分:3)
Backbone集合需要一个可以转换为模型的属性模型/哈希列表,但是您有一个普通数组。
您必须将数组转换为哈希列表。假设您的值是模型的id
:
var lst = _.map(this.noOfHouseHold, function(val) {
return {id: val};
});
var adultListCollection = new Backbone.Collection(lst);
答案 1 :(得分:0)
Backbone.Collection
需要一个模型或对象列表(因为它们可以转换为Backbone.Model
)。为了保持数组,你必须将这些原语转换为对象。使用Backbone.Collection.parse
和_.map
将基元数组转换为对象数组:
var AdultListCollection = Backbone.Collection.extend({
parse: function (noOfHouseHold) {
var res = _.map(noOfHouseHold, function (n) {
return {id: n};
});
return res;
}
});
现在您可以使用数组实例化您的Collection:
var adultListCollection = new AdultListCollection(this.noOfHouseHold, {parse: true});
示例: JSFiddle