2012-08-05 21 views
5

Tôi không muốn ghi đè Backbone.sync() vì một số mô hình của tôi sẽ thực sự sử dụng tiêu chuẩn sync().Thực tiễn tốt là ghi đè hàm fetch() và lưu() trực tiếp từ Mô hình?

Thực tiễn tốt là ghi đè fetch()save() trực tiếp từ Mô hình?

+0

Nếu không muốn ghi đè 'Backbone.sync()', bạn luôn có thể ghi đè 'MyModel.sync()'. Nếu bạn đi để ghi đè 'MyModel.fetch()' và 'MyModel.save()' có thể bạn cũng phải ghi đè 'MyModel.destroy()'. Nhưng dù sao tôi nghĩ mọi thứ phụ thuộc vào lý do của bạn để không sử dụng phương pháp _sync_ chuẩn? – fguillen

+0

@fguillen Một số mô hình của tôi sẽ sử dụng localStorage trong khi những người khác sẽ sử dụng tiết kiệm phía máy chủ ... –

+0

Sau đó, tôi sẽ thực hiện việc ghi đè 'MyModel.sync()', sẽ có các triển khai LocalStorage cho Backbone. – fguillen

Trả lời

4

Không cần ghi đè sync trên toàn cầu. Bạn có thể làm điều đó cho mỗi Mẫu/Bộ sưu tập tức là,

var MyModel = Backbone.Model.extend({ 
    sync: customSync, 
    ... 
}); 

Điều này tránh ghi đè Backbone.sync trên toàn cầu.

Bây giờ, nếu bạn không cần phải thực hiện đồng bộ hóa đầy đủ, ví dụ: bạn chỉ cần ghi đè fetch, tất nhiên bạn cũng có thể làm như vậy trên từng mô hình.

Có lẽ bạn đã thấy Backbone.sync bị phiên bản localStorage ghi đè. Điều này thực sự là không cần thiết (tôi nghĩ rằng đó là thực hành xấu). Chỉ cần xác định hàm sync tùy chỉnh và cho phép các mô hình/bộ sưu tập sử dụng nó.

Các vấn đề liên quan