2012-01-17 44 views

Trả lời

4

Hãy thử một cái gì đó như thế này, có thể không phải là giải pháp tốt nhất nhưng nó hoạt động:

 

var parentSyncMethod = Backbone.sync; //save parent method, the override 
Backbone.sync = function() { 
    // Your code here. 
    var parentSyncMethod.apply(Backbone, arguments); 
}; 
 

Hy vọng nó giúp trong một số cách

1

Backbone.prototype.sync.call sẽ không làm việc vì sync không xác định trên nguyên mẫu. Kiểm tra đối tượng Backbone trong bảng điều khiển để xem cấu trúc của nó. Bạn sẽ muốn đặt tên cho phương thức của riêng mình hoặc lưu tham chiếu đến phương thức gốc sync trước khi bạn ghi đè phương thức đó bằng cách triển khai của chính bạn.

9

Từ những gì tôi hiểu, Backbone.sync kiểm tra để xem nếu có một phiên bản được xác định tại địa phương đồng bộ và kêu gọi rằng trước khi gọi các Backbone.sync toàn cầu:

(this.sync || Backbone.sync) 

Vì vậy, cho rằng mô hình của bạn là một cái gì đó như TestModel. Tôi nghĩ rằng bạn có thể làm một cái gì đó như thế này (tha thứ, tôi điều này có thể không phải là cú pháp đúng, javascript là xa đặc sản của tôi):

var TestModel = Backbone.Model.extend({ 

    "sync": function(method, model, options) { 
     //Some custom code 

     Backbone.sync(method, model, options); 
    } 
}); 

Đây là những gì tôi đã thu thập được từ herehere

+3

Tôi đã sử dụng phương pháp này trước đây và thấy rằng nó hoạt động tốt, đặc biệt nếu bạn cần đồng bộ hóa theo mô hình cụ thể. Thay đổi trực tiếp Backbone.sync (như được hiển thị trong câu trả lời khác) sẽ ảnh hưởng đến tất cả các mô hình, có thể không phải là những gì bạn cần. – erturne

4
var TestModel = Backbone.Model.extend({ 
    sync: function(method, model, options){ 
     // some code here 
     return Backbone.sync(method, model, options); 
    } 
}); 
Các vấn đề liên quan