我有从服务器返回的JSON,我正在用它填充Backbone集合。
Person = Backbone.Model.extend({
});
PersonCollection = Backbone.Collection.extend({
model: Person
});
var jsonString = "[
{ \"name\": \"Anna\", \"id\": 5 },
{ \"name\": \"Lina\", \"id\": 26 },
{ \"name\": \"Melissa\", \"id\": 55 }
]"
var people = JSON.parse(jsonString); //people is now an array of 3 persons
var personCollection = new PersonCollection();
for (var i = 0; i < people.length; i++) {
personCollection.add(people[i]);
}
var personCollectionView = new PersonCollectionView({ collection: personCollection});
var personCollectionView = new PersonCollectionView({ collection: people});
我的JSON正在返回一个模型数组,我不知道为什么我不能将这个数组直接传递给PersonCollectionView?我是否需要在PersonCollection的parse方法中做些什么,这样当给定一个模型数组时,它会将它转换为模型集合?
我确定我错过了什么。有人可以指出那是什么吗?
答案 0 :(得分:5)
您未正确创建收藏对象,请将new
关键字删除为:
PersonCollection = Backbone.Collection.extend({
model: Person
});
然后,您可以创建JSON对象并将其传递给集合:
var people = JSON.parse(jsonString);
var personCollection = new PersonCollection(people);
请注意,JSON.parse
使用小写,jsonString
语法不正确:
var jsonString = "[ { \"name\": \"Anna\", \"id\": 5 }, { \"name\": \"Lina\", \"id\": 26 }, { \"name\": \"Melissa\", \"id\": 55 } ]";
查看有效的演示here。
答案 1 :(得分:1)
在第二种情况下,people
不是正确的Backbone集合(除非您省略了定义它的代码)。如果它只是一个JSON数组,请先创建集合
var personCollection = new PersonCollection(people);
然后在创建视图时使用该集合
var personCollectionView = new PersonCollectionView({collection: personCollection});