鉴于此系列 -
{"education":
[
{
"school":{
"name":"Maxwell",
"type":"Secondary",
"teachers": [
{"name":"Mrs. Smith","subject":"Chemistry"},
{"name":"Mr. Jones","subject":"Calculus"}
]
}
},{
"school":{
"name":"Bright",
"type":"Elementry",
"teachers": [
{"name":"Mr. Anthony","subject":"Reading"},
{"name":"Mrs. Bates","subject":"Social Studies"}
]
}
}
]
}
我正在尝试归还所有学校物品,以便可以在模板中显示名称。
鉴于此代码 -
schools = [];
filtered = this.filter(function (item) {
return (
item.get('school') !== ''
)
});
_.each(filtered, function(k,v) {
_.each(k.attributes.models, function (k2, v2) {
schools.push(k2.get('school'));
});
});
colSchools = new Backbone.Collection(schools);
这可以完成工作,但它似乎不是很有效,或者说不是真正的正确做事方式。
我尝试循环而不是过滤,我得到一个错误k is undefined。我想我的问题是两部分 - 为什么返回k 是未定义的,我在获取教育集合的子集时缺少什么?我觉得嵌套循环是多余的工作,不需要发生。可能是我误解了 Backbone 处理集合的方式,或者这真的是实现我的目标的最佳方式吗?