バックボーンを使用してコレクションをフィルタリングするための最良の方法は、コレクションを取得し、サブセットでフィルタリングされたコレクションを返すことです。これにより、コードがより再利用しやすくなります。
フィルターを作成するには、コレクションにフィルター処理された関数が必要です
var MyCollection = Backbone.Collection.extend ({
filtered : function ( min , max) {
有効な場合は true を返し、無効な場合は false を返す UnderScore フィルターを使用することをお勧めします。true は探しているものです。this.models を使用して現在のコレクション モデルを取得します model.get( '' ) を使用してチェックする要素を取得します
var results = _.filter( this.models, function ( model ) {
if ( model.get('index') >= min && model.get('index') <= max )
return true ;
return false ;
});
次に、アンダースコアを使用して結果をマップし、JSON のように変換します
results = _.map( results, function( model ) { return model.toJSON() } );
最後に、結果のみを含む新しいバックボーン コレクションを返します
return new Backbone.Collection( results ) ;
必要に応じて、コレクション内のすべてのデータを保持するのではなく、フィルター処理されたデータのみを保持する場合は、コレクションをリセットして、上記の戻り値をスキップする必要があります
this.reset( results ) ;
View : フィルター処理されたメソッドを呼び出し、各項目で render() を使用します