【问题标题】:Backbone - trying to make a filter on a collection with nested object骨干 - 尝试对具有嵌套对象的集合进行过滤
【发布时间】:2013-08-18 01:54:35
【问题描述】:

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

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

我的目标很简单: 我有一个带有标签列表的视图和一个带有所有问题的内容视图。当用户单击标签时,例如“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);
    },

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

【问题讨论】:

    标签: backbone.js


    【解决方案1】:

    我刚刚找到了一个可行的解决方案。

        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);
        },
    

    我放了一面旗帜。如果他在循环内变为真,则模型具有此标签,因此我将其返回。 我认为这不是很传统,所以如果有人有其他解决方案,请随时发布:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多