このコレクションを考えると -
{"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というエラーが表示されます。私の質問は 2 つの部分だと思います。戻り値k が定義されていないのはなぜですか?教育コレクションのサブセットを取得することについて何が欠けていますか? ネストされたループは、発生する必要のない余分な作業のように感じます。バックボーンがコレクションを処理する方法を誤解している可能性がありますか、それともこれが本当に私の目標を達成するための最良の方法ですか?