Backbone-Sammlung - Konstruktor

8

Ich übergebe ein Array an eine neue Sammlung. Ist es möglich, das Array zu filtern, indem Sie den zweiten Parameter übergeben und das Attr des Objekts im Array überprüfen und eine Kollektion erstellen, wenn sie den Filtertest besteht.

%Vor%

Kann ich nur für das Objekt eine Sammlung erstellen, die weniger als 30 Jahre alt ist.

    
coool 30.08.2013, 11:55
quelle

2 Antworten

5

Sie können _.filter auf Ihrem Array verwenden, bevor Sie in die Sammlung gelangen

%Vor%

Oder Sie können Ihre benutzerdefinierte Filterlogik in Ihre Sammlung initialize verschieben, wo Sie das Array models erhalten, was Sie ändern / filtern können

%Vor%

Demo JSFiddle .

Sie können dies erweitern, indem Sie das Filterprädikat im Optionsparameter

angeben %Vor%

Und benutze es mit

%Vor%     
nemesv 30.08.2013, 12:18
quelle
1

Aktualisieren

Sie sind an der Validierung interessiert, bevor Sie die Sammlung erstellen, genau wie bei der vorherigen Antwort. Wir erstellen eine Funktion, mit der Sie diese Strategie für die Validierung einer beliebigen Sammlung basierend auf einer gewünschten Bedingung wiederverwenden können.

%Vor%

Nun können wir eine solche Sammlung erstellen, die bestätigt, dass jedes Element ein Alter von mindestens 30 hat:

%Vor%

Wenn Sie nur die Elemente filtern möchten, die Sie nicht mögen - anstatt einen Fehler zu erzeugen, wenn nicht alle validieren, können Sie etwas tun:

%Vor%

Alternativ können Sie Ihren eigenen gefilterten Auflistungskonstruktor zur Wiederverwendung als solchen erstellen

%Vor%

Was uns ermöglicht:

%Vor%

Die andere Antwort schlägt _.filter gegenüber dem nativen Array.filter vor, dies kann nützlich sein, wenn Sie alte Browser unterstützen müssen.

    
Benjamin Gruenbaum 30.08.2013 12:20
quelle

Tags und Links