Backbone集合过滤器,其中where和get对象数组

时间:2013-11-13 16:48:48

标签: javascript backbone.js backbone-model backbone-collections

我有一个像这样的json:

Constants
Contents(Array)
->Sections(Array)
-->sections.attribute1
->constants.attribute1
->constants.attribute2
Templates

我已经过滤了json以获取带有此代码的内容集合:

var viasModel = Backbone.Model.extend({});

var viasCollection = Backbone.Collection.extend({

    model: viasModel,

    url: TEMPLATES_SERVICE,

    parse: function(data){
        return data.contents.data;
    },
    initialize: function(){
        this.fetch();
    },
    route: function(via){
        return this.where({viaId: via});
    }
});

假设我已经使用路径功能过滤了集合。

如何过滤Sections(Array)并仅获取已过滤集合的各个部分的元素?

它是否包含路由的每个返回值?

this.where({viaId: via});

我是否必须找到如何嵌套集合?任何帮助将不胜感激。

- 编辑 -

当我将变量赋值给arr时,我得到一个带属性的对象。

attributes: Object

-name: 'test',
-sections: Array[9]
--0: Object
---itemId: 'inicio'
---content: Array[2]

--1: Object
---itemId: 'hola'
---content: Array[2]

我想获得部分Array的itemId ==='inicio'的内容Object。

我不想看起来很糟糕,所以如果你可以指导我或给我一些帮助,我很好。

谢谢。

1 个答案:

答案 0 :(得分:0)

好的,谢谢你的评论,似乎这基本上是关于过滤数组,这是我的建议:

var arr = collectionGenerated.where(name: 'attribute');

var result = $.grep(arr, function(val) {
   return val.itemId == 'attribute';
});

结果是数组只包含适合两个滤镜的内容。

- 编辑 -

我想你的数据结构是

var result = $.grep(arr.sections, function(val) {
 return val.itemId === 'inicio';
});