2012-07-18 38 views
5

Có thể ghi đè lên các phương pháp collection.add trên toàn cầu trong xương sống như vậy:Overriding Backbone.Collection.prototype.add

Backbone.Collection.prototype._add = Backbone.Collection.prototype.add; 
Backbone.Collection.prototype.add = function(models, options) { 
    var = newModels = models.items; 
    Backbone.Collection.prototype._add(newModels, options); 
} 

Các api Tôi đang sử dụng luôn luôn chứa các mô hình thực tế một cấp xuống cho các bộ sưu tập . Dưới items và tôi thấy mình ghi đè phương pháp .add cho tất cả các bộ sưu tập. Tôi đã thử những gì tôi có ở trên nhưng nó dường như không hoạt động. Bất kỳ ý tưởng?

Cảm ơn,

Luis

+0

Lưu ý: 'var = newModels = models.items;' phải là 'var newModels = models.items;'. Tôi nhận thức được nó nhưng đó không phải là những gì đang phá vỡ mã. – luisgo

+0

Bao giờ giải quyết vấn đề này? – seebiscuit

Trả lời

8

Hãy thử như sau:

var Example = Backbone.Collection.extend({ 
    add: function(models, options) { 
     Backbone.Collection.prototype.add.call(this, models.items, options); 
    } 
}) 

Sau đó, bạn có thể mở rộng tất cả các bộ sưu tập từ Example.

+0

Cảm ơn. Đó là cơ bản những gì tôi đang làm cho mỗi bộ sưu tập ngay bây giờ. Tại thời điểm này sẽ trở lại và thay đổi tất cả các định nghĩa bộ sưu tập của tôi sẽ là quá nhiều công việc. Hy vọng của tôi là tìm thứ gì đó sẽ áp dụng trên toàn cầu vì vậy thay vì lệch khỏi chuẩn mực, tôi sẽ xóa mã. Cảm ơn! – luisgo