2012-02-29 9 views
1

私はバックボーンコレクションを持っていて、属性内のIDによってフィルタリングしようとしています 基本的に、ユーザにはクラスがあり、クラスにはlocation_idがあります。位置ID。私のコレクションはあなたにアイデアを与えるためにこのように見えます。属性を持つバックボーンからのコレクションをフィルタリングする

 
-user 
    -models 
    -0 
     -attributes 
     -location_id 
     -1 
     -attributes 
     -location_id 
     -2 
     -attributes 
     -location_id 

私は

 
    var get_locations = user_class_collection.filter(function(classes){ 
     console.log(classes); 
     return classes.get(location_id)==location.id; 
     }); 

    console.log(get_locations); 

を使用してこれをフィルタリングすることができると思ったが、私はlocation_idのコレクションである知っているときには、空の配列を返します。 これはなぜ機能しないのでしょうか?私はまたclasses.attributes.getをつかむことを試みたが、それはそれ以上のものではなかった。

最初のいくつかの回答では、私はget('location_id')を引用しなければならないと正しく言及した。私は今それをやったことがありますが、残念ながら、私はまだ空の配列を取得しています。私はfilterがクラスをループして、各クラスのコンソール出力を得ると考えましたが、console.log(classes)は1回だけトリガーされています。それはヒントですか?または赤ニシン?

+3

が、それは 'classes.get(「LOCATION_ID」)'すべきではない結果をレンダリング? (一重引用符で) – mindandmedia

答えて

6

location_idパラメータの値として指定されたクラスからプロパティを取得しようとしています 代わりに文字列を作成する必要があります(実際には文字列の作成方法を選択できます。 )

user_class_collection.filter(function(classes){ 
    return classes.get('location_id') == location.id; 
}); 
+0

ありがとうサンダー、それは問題の一つかもしれません(と私はもともとあなたにポイントを与えた、明らかに私は別の問題が続いています。)質問を更新しました – pedalpete

+0

応答。ありがとう – pedalpete

0

これを試してみてください:

user_class_collection.select(function(classes){ 
    return classes.get("location_id")==location.id; 
    }); 
1

フィルタリングコレクションのためにあなたのコレクションでフィルタリング機能を使用するためのバックボーンを最善のアプローチがされて使用して

var UserCollection = Backbone.Collection.extend ({ 
    filtered : function (id) { 

有効である場合は真を返し、探している場合は真を返すアンダースコアフィルタを使用することをお勧めします。現在のコレクションのモデルは使用があなたの結果をマッピングし、

results = _.map(results, function(model) { return model.toJSON() }); 
ようにJSONに変換アンダースコアあなたが次に

var results = _.filter(this.models, function (model) { 
     if (model.get('location_id') == id ) 
     return true ; 
    return false ; 
    }); 

をチェックしたい要素を取得するためにmodel.getを(「」)を使用取得するthis.modelsを使用

あなたは、コレクション内のすべてのデータを維持する必要はありませんが、ちょうどフィルタ1は、あなたが協力をリセットする必要がある場合にのみ

return new Backbone.Collection(results) ; 

必要に応じて結果を最後に新基幹コレクションを返しますllectionと

this.reset(results) ; 

ビューコールのような上記のリターンをスキップフィルター処理されたコレクションと

関連する問題