Tôi đã một mô hình xác định và một bộ sưu tập:Lọc bộ sưu tập xương sống bởi giá trị thuộc tính
var Box = Backbone.Model.extend({
defaults: {
x: 0,
y: 0,
w: 1,
h: 1,
color: "black"
}
});
var Boxes = Backbone.Collection.extend({
model: Box
});
Khi bộ sưu tập được dân cư với các mô hình, tôi cần một hộp bộ sưu tập mới được làm từ các mô hình hộp có một màu sắc cụ thể thuộc tính chứa trong bộ sưu tập hoàn chỉnh, tôi làm theo cách này:
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);
Công trình này, nhưng tôi thấy nó hơi phức tạp và không hiệu quả. Có cách nào để làm điều tương tự này theo một cách đơn giản hơn không?
Đây là mã tôi đã mô tả: http://jsfiddle.net/HB88W/1/
Will này thay đổi cid trong mô hình? – janetsmith
filterBy: function (thuộc tính, giá trị) { filters = this.filter (hàm (box) { return box.get (thuộc tính) === value; }); trả lại các Hộp mới (đã lọc); } – Josh
Tại sao trả lại một hộp mới() '. Tôi sẽ viết var Boxes = Backbone.Collection.extend ({ mô hình: Box, byColor: function (color) { trả lại this.filter (hàm (box) { return box.get ("color") = == màu; }); } }); – marcoslhc