2016-10-12 5 views
0

複数のモデルとビューでアプリケーションを実装しましたが、コレクションは理解するのが面倒です。今まで私はコレクションを使わずに目標を達成しましたが、今ではその属性に基づいて一連のモデルを操作する必要があります。そして私は今コレクションが必要であると確信しています。バックボーンコレクションを使用してモデルをフィルタリングする方法

Iは、(実際の実装よりもずっと簡単である)以下の構造を有する:

app.Connector=Backbone.Model.extend({ 
    line: //a d3 line object 
    source: //a d3 group 
    target: //a d3 group 
    // and some functions 
}); 

app.Set=Backbone.Collections.extend({ 
    model:app.Connector; 
    url:"/set" //what is the purpose of url? 
}); 

var set=new app.Set(); 
//multiple connectors are initialized 

私はD3オブジェクトobjを有していると言います。 objを持つコネクタのリスト/配列をtargetとして取得するにはどうすればよいですか?

答えて

2
var filtered = set.filter(d=>d.get('target') == obj) 

私はあまりにも冗長であることをバックボーンにget機能を見つけたので、私はフィルタリングの前JSONにコレクションを変換したいです。

var filtered = _.filter(set.toJSON(),d=>d.target == obj) 
+0

私は試しましたが、返された配列は空です。 https://jsfiddle.net/sachid/qko7vnxv/1/ – SachiDangalla

+1

https://jsfiddle.net/qko7vnxv/2/でJSfiddleをチェックしてください。モデルを作成した後、コレクションを作成しました。モデルをコレクションに入れることは決してありません! –

+0

ありがとうございます。最後の1つの質問。すべての 'Connector'をあらかじめ初期化された' Set'に追加したいのであれば、モデルの初期設定で 'set.add(this)'と言って何か間違っていますか? – SachiDangalla

関連する問題