Wenn Sie die Filterung Client-Seite tun, ist das Überschreiben der Filtermethode wirklich nicht der Weg zu gehen.
Jetzt haben Sie es nicht mehr verfügbar, sollten Sie es später brauchen. Auch das Ändern der Sammlung selbst innerhalb der Filtermethode ist ein unerwünschter Nebeneffekt.
Stattdessen sollten Sie die parse method verwenden, die beim Abrufen der Sammlung automatisch aufgerufen wird.
Jetzt, wie ich es verstehe, möchten Sie die abgerufene Gruppe auf Modelle mit Namen beschränken, die mit den Schlüsseln in Ihrem Wörterbuch übereinstimmen.
Wenn ja, würde ich folgendes tun:
parse: function(response, options) {
// Do we want to filter the response?
if (options.filterNames) {
// Filter
response = _.filter(response, function(obj) {
// Check if this model name is one of the allowed names
return _.contains(options.filterNames, obj.name);
});
}
// Backbone will use the return value to create the collection
return response;
}
Und dann holen rufen mit
someCollection.fetch({filterNames: _.keys(someDictionary)});
Wenn Sie sicher sind, werden Sie immer die auf Abruf Sammlung Filterung werden, können Sie Lassen Sie die Option weg und verwenden Sie einfach das Wörterbuch innerhalb von Parse.
Alternativ können Sie auch eine fetchFiltered()
-Methode für die Sammlung erstellen, die dann die obige Zeile aufruft.
Konnten Sie Ihre Versuche bekannt geben? –
Möchten Sie eine Sammlung filtern oder möchten Sie sie holen (zB von einem Server)? –
@JeppeStougaard Ich möchte die Sammlung teilweise abrufen, anstatt sie (vollständig) zuerst abzurufen und dann die Modelle zu filtern, die meinem Wörterbuch entsprechen. – adelphia