gpt4 book ai didi

javascript - 迭代backbone.js中的集合

转载 作者:行者123 更新时间:2023-11-28 13:57:29 24 4
gpt4 key购买 nike

var User = Backbone.Model.extend({
defaults : {
"students" : [
{
name : "abc",
grade: "A",
school: "xyz"
}],
"interest":
{
music : "yes"
}
}
});

var UserList = Backbone.Collection.extend({
model : User,
});

var obj = new UserList({"students" : [{name:"Rax", grade: "B", school : "javiers"}, {name:"John", grade: "C", school : "loreto"}], "interest" : {music: "yes"}});

for(var i = 0; i < obj.students.length; i++) {
console.log(obj.students.at(i).get("name"));
console.log(obj.students.at(i).get("grade"));
console.log(obj.students.at(i).get("school"));
}

//i want to iterate over each students detail(name, grade and school) ..but this is giving me error " obj.students is undefined " ..why this error is coming?

最佳答案

首先,有几个语法错误,因此请查看控制台并修复这些错误。此外,您传递给集合的对象在概念上存在问题。

集合是一个“用户列表”,模型是一个用户。因此,也许您应该更改defaults 数据描述。将 students 设为用户的数组是没有意义的。

此外,当您创建 Collection 实例时,您可以使用 create method 创建模型,而不是仅仅传递哈希值。您可以通过这种方式实例化模型,但不能实例化集合。

所以当你想创建一个用户时,你只传递一个“学生”,也许是这样的(你还必须将“url”键放入你的集合中,否则它将不起作用):

var User = Backbone.Model.extend({
defaults : {
"students" : [{
name : "abc",
grade: "A",
school: "xyz"
}],
"interest":{
music : "yes"
}
}
});

var UserList = Backbone.Collection.extend({
model : User,
// `url` is required, otherwise Backbone will throw an error
url : '/something'
});
var userList = new UserList();

var bob = userList.create({
students : [ {
name:'bob',
grade : 'a',
school : '123'
} ],
interest : { music : 'no' }
});

console.log( bob.get('students')[0].grade );

http://jsbin.com/elusey – 在这里,点击“编辑”并查看代码和控制台。您应该看到“a”作为输出。

您实际上可以将模型简化为这样(正如我所说,上述数据结构对于单个用户来说并没有真正意义):

var User = Backbone.Model.extend({
defaults : {
name : "abc",
grade : "A",
school : "xyz"
interests : ["music"]
}
});

UPD。实际上,您不必使用 create 集合方法来将模型添加到集合中。当您创建集合的实例时,您可以传入一组模型,如下所示(请注意区别,在代码中您将一个对象传递给集合,但实际上您需要传递一个数组,即使只有一个对象在其中):

var userList = new UserList([{
name:'bob',
grade : 'A',
school : '123',
interests : [ "music" ]
},{
name:'george',
grade : 'B',
school : '321',
interests : [ "drugs" ]
}]);

您可以在这里找到使用这种添加模型的方式的工作示例(不要忘记查看控制台):http://jsbin.com/elusey/2/edit

关于javascript - 迭代backbone.js中的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7263187/

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