Ich habe eine definierte Modell und eine Sammlung:Filter Backbone Sammlung von Attributwert
var Box = Backbone.Model.extend({
defaults: {
x: 0,
y: 0,
w: 1,
h: 1,
color: "black"
}
});
var Boxes = Backbone.Collection.extend({
model: Box
});
Wenn die Sammlung mit den Modellen bevölkert ist, ich brauche eine neue Kollektion Pappschachtel aus Box-Modelle, die eine bestimmte Farbe haben Attribut in der vollständigen Sammlung enthalten, mache ich es so:
var sorted = boxes.groupBy(function(box) {
return box.get("color");
});
var red_boxes = _.first(_.values(_.pick(sorted, "red")));
var red_collection = new Boxes;
red_boxes.each(function(box){
red_collection.add(box);
});
console.log(red_collection);
Dies funktioniert, aber ich finde es ein bisschen kompliziert und ineffizient. Gibt es eine Möglichkeit, das Gleiche einfacher zu machen? Hier
ist der Code, den ich beschrieben: http://jsfiddle.net/HB88W/1/
wird diese Änderung cid in Modell? – janetsmith
filterBy: Funktion (Attribut, Wert) { gefiltert = this.filter (Funktion (Box) { Rückgabe box.get (Attribut) === Wert; }); Rückgabe neuer Boxen (gefiltert); } – Josh
Warum ein 'new Boxes()' zurückgeben. Box, byColor:: function (Farbe) { return this.filter (function (box) { return box.get ("color") = I würde var Boxes = Backbone.Collection.extend ({ Modell schreiben == Farbe; }); } }); – marcoslhc