2017-03-02 9 views
-1

コレクションをフィルタリングして新しいリストを返して、ページにレンダリングできるようにしようとしています。コレクションのアンダースコア/バックボーンフィルタリング

コレクション自体に新しい関数を作成しましたが、一致(静的一致)があることがわかっていても、2番目のIF文でTRUEを評価することはできません。

私はtypeofを試してみても、物事を踏み外していないことを確認しました。

誰でも私が迷っていることを教えてもらえますか?

var DisciplinesCollection = Backbone.Collection.extend({ 
model: Discipline, 
filterByCategory: function(cat){ 
    this.each(function(item){ 
    var category = item.attributes.category 
    console.log(category, cat) 
    if ('intermediate' == cat){ 
     console.log('static match') 
    } 
    if (category == cat){ 
     console.log('dynamic match') 
    } 
    }); 
} 

});

+0

期待どおりに動作するように見えるhttps://jsfiddle.net/tvfspxtg/1/ – nikoshr

+0

ところで、 'item.attributes.category'より' item.get( 'category') 'を使うのは良い習慣です。 –

答えて

0

私の問題は、カテゴリパラメータが、スペースで区切られた潜在的なカテゴリのリストを含む文字列だったと思います。これらのアイテムを入れ子にしてしまえば、コードが正しく動作していました。関心のある人の最終的なコード例:

var DisciplinesCollection = Backbone.Collection.extend({ 
model: Discipline, 
filterByCategory: function(cat){ 
    return _(this.filter(function(data) { 
    return _.contains(data.get("category"), cat);   
    })); 
} 

});

関連する問題