0

ネストされたオブジェクトを持つモデルを持つコレクションをフィルタリングしようとしています。残念ながら、私の結果は常に空です。

したがって、コレクションで返されるモデルは次のように構築されます。

モデル

私の目標は単純です。 タグのリストを含むビューと、すべての質問を含むコンテンツ ビューがあります。ユーザーが「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);
    },

単純かもしれませんが、何をすべきかわかりません。前もって感謝します :)

4

1 に答える 1

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 になった場合、モデルにはこのタグがあるので、それを返します。あまり慣習的ではないと思うので、誰かが別の解決策を持っている場合は、気軽に投稿してください:)

于 2013-08-17T17:54:35.623 に答える