Tengo un modelo definido y una colección:Filtro colección cadena principal por valor de atributo
var Box = Backbone.Model.extend({
defaults: {
x: 0,
y: 0,
w: 1,
h: 1,
color: "black"
}
});
var Boxes = Backbone.Collection.extend({
model: Box
});
Cuando la colección se completa con los modelos, necesito una nueva colección de cajas hechas de modelos de cajas que tienen un color específico atributo que figura en la colección completa, lo hago de esta manera:
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);
Esto funciona, pero me parece un poco complicado e ineficiente. ¿Hay alguna forma de hacer lo mismo de una manera más simple?
Este es el código que he descrito: http://jsfiddle.net/HB88W/1/
Cambiará esto cid en el modelo? – janetsmith
filterBy: function (attribute, value) { filtered = this.filter (function (box) { return box.get (attribute) === value; }); devolver nuevas Cajas (filtradas); } – Josh
Por qué devolver 'nuevos cuadros()'. Me gustaría escribir Cajas var = Backbone.Collection.extend ({ modelo: caja, byColor: function (color) { retorno this.filter (function (caja) { box.get retorno ("color") = == color; }); } }); – marcoslhc