Backbone.js: Richtige Art eine Sammlung zu filtern?

Die aktuelle Methode, die ich verwende, besteht darin, eine Sammlung zu filtern, die ein Array zurückgibt, und zu verwenden

collection.reset(array)

um es wieder aufzufüllen. Dadurch wird jedoch die ursprüngliche Auflistung geändert, sodass ich ein Array mit dem Namen "originalCollectionArray" hinzugefügt habe, das den anfänglichen Array-Status der Auflistung verfolgt. Wenn keine Filterung aktiv ist, benutze ich einfach

collection.reset(originalCollectionArray)

Aber dann muss ich das Hinzufügen und Entfernen von Modellen aus der realen Sammlung nachverfolgen, also habe ich Folgendes getan:

// inside collection
initialize: function(params){
    this.originalCollectionArray = params;
    this.on('add', this.addInOriginal, this);
    this.on('remove', this.removeInOriginal, this);
},
addInOriginal: function(model){
    this.originalCollectionArray.push(model.attributes);
},
removeInOriginal: function(model){
    this.originalTasks = _(this.originalTasks).reject(function(val){
        return val.id == model.get('id');
    });
},
filterBy: function(params){
    this.reset(this.originalCollectionArray, {silent: true});
    var filteredColl = this.filter(function(item){
        // filter code...
    });
    this.reset(filteredColl);
}

Dies wird schnell umständlich, da ich versuche, andere Tricks im Zusammenhang mit der Manipulation der Sammlung zu implementieren, z. B. das Sortieren. Und ehrlich gesagt, mein Code sieht ein bisschen kitschig aus. Gibt es eine elegante Möglichkeit, dies zu tun?

Vielen Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage