javascript - 如何获取 Backbone.Collection 的子集?

标签 javascript json backbone.js underscore.js

鉴于此集合 -

{"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);    

这样可以完成工作,但它似乎效率不高,或者确实不是正确的做事方式。

我尝试在 this 上循环而不是过滤,但我收到一个错误,提示 k 未定义。我想我的问题分为两部分 - 为什么返回 k is undefined 以及我在获取教育集合的子集时遗漏了什么?我觉得嵌套循环是不需要发生的多余工作。可能是我误解了 Backbone 处理集合的方式,或者这真的是实现我目标的最佳方式吗?

最佳答案

我认为 http://backbonejs.org/#Collection-pluck是你要找的:

var stooges = new Backbone.Collection([
  {name: "Curly", age: 60},
  {name: "Larry", age: 70},
  {name: "Moe", age: 80}
]);

var names = stooges.pluck("name");

alert(JSON.stringify(names));

如果你尝试它,这应该会提醒 ["Curly","Larry","Moe"]

编辑:抱歉,我没有发现嵌套级别,但由于 pluck 它只是 map 的一个应用程序,您可以这样做:

stooges.map(function(model){
  return model.get('school').name;
});

关于javascript - 如何获取 Backbone.Collection 的子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16591907/

相关文章:

javascript - 主干 View 作为无序或有序 html 列表的一部分

php - Backbone.js 序列化模型属性以进行同步

javascript - 深度克隆 Backbone.js 模型

javascript - FCM(网络)是否使用 WebSocket 作为消息接收者?

javascript - jQuery UI 对话框 - 无法删除按钮

javascript - 为什么 fullcalendar 无法解析 JSON?

javascript - 在函数外部使用 $when...then() 内部的变量

javascript - 替换多个元素中一个字符的所有实例

json - Solr JSON 输出从数组到字符串

javascript - 如何在更新集合时更新模板的一部分?