Backbone - 尝试使用嵌套对象对集合进行过滤

时间:2013-08-17 16:21:00

标签: backbone.js

我正在尝试过滤具有某些嵌套对象的模型的集合。不幸的是,我的结果总是空的。

所以我在集合中返回的模型是这样构建的:

model

我的目标很简单: 我有一个带有标签列表的视图和一个包含所有问题的内容视图。当用户点击标记时,例如“c#”,我想过滤我的集合,只返回标记为“c#”的问题

在我在我的服务器上进行提取之前它工作正常,但它没有优化。

我已经有了一个包含所有问题的集合,所以为什么要拨打新电话,过滤器是我认为更好的解决方案。

但我没有使用我的过滤器成功,我不知道是否可以这样做。现在我将我的过滤器放在我的路由器中,因为它更容易测试。

我无法制作这样的滤镜,因为我有一个对象数组

    getQuestionsByTags: function(query) {

        var test = this.questionsCollection.filter(function(model) {
             return model.attributes.tags.name == query;
        })
        console.log('result');
        console.log(test);
    },

所以我想做一个循环,但我的结果总是一个空数组。

    getQuestionsByTags: function(query) {

        var test = this.questionsCollection.filter(function(model) {
            _.each(model.attributes.tags, function(tag) {
                return tag.name == query;
            })
        })
        console.log('result');
        console.log(test);
    },

这可能很简单,但我不知道该怎么做。 在此先感谢:)

1 个答案:

答案 0 :(得分:0)

我刚刚找到了一个有效的解决方案。

    getQuestionsByTags: function(query) {
        var flag;
        var test2 = this.questionsCollection.filter(function(model) {
            flag = false;
            _.each(model.attributes.tags, function(tag) {
                if(tag.name == query) {
                    flag = true;
                }
            })

            if(flag) {
                return model.attributes;
            }
        })

        console.log('result');
        console.log(test2);
    },
我放了一面旗帜。如果他在循环中变为true,则模型具有此标记,因此我将其返回。 我认为这不是很传统,所以如果有人有其他解决方案,请随意发布:)