2012-07-10 24 views
11

Điều gì xảy ra chính xác khi bạn lưu mô hình Backbone? Dưới đây là tốt nhất mà tôi có thể mảnh với nhau bằng cách đọc các tài liệu hướng dẫn here:Điều gì xảy ra chính xác khi bạn lưu mô hình Backbone?

  1. model.save([attributes], [options]) được gọi
  2. A "thay đổi" sự kiện là bắn (nhưng chỉ khi các thuộc tính là người mới)
  3. Các máy chủ được thông báo về thay đổi?
  4. A "đồng bộ" Sự kiện này được gọi khi máy chủ trả

Nhưng tôi là một Noob Backbone và tôi chắc chắn rằng ai đó có thể làm một cách tốt hơn trong việc giải thích.

Tôi hơi tò mò điều gì xảy ra. Tôi cũng gặp khó khăn trong việc hiểu cách Backbone xuất hiện với đối tượng JSON mà nó gửi đến máy chủ. Tôi đang có một số separate problem trong đó đối tượng JSON không phải là thứ tôi muốn, nhưng tôi không biết cách thay đổi nó.

Trả lời

8

Quy trình chi tiết có thể được tìm thấy trong annotated source code cho Backbone.Model.saveBackbone.sync.

Nếu bạn bỏ qua options.waitoptions.silent, quá trình phân hủy của bạn chủ yếu là chính xác.

Khi bạn đưa ra một model.save:

  1. các thuộc tính truyền cho hàm được thiết lập, một sự kiện thay đổi là bắn nếu các giá trị thay đổi
  2. save đại biểu yêu cầu đến model.sync hoặc Backbone.sync
  3. sync serializes dữ liệu vào chuỗi JSON bằng cách gọi JSON.stringify(model.toJSON())
  4. Yêu cầu Ajax được gửi đến máy chủ, yêu cầu POST cho một đối tượng mới, PUT để cập nhật. URL mục tiêu được xác định bởi model.url (hoặc collection.url/id)
  5. Khi yêu cầu hoàn tất, mô hình được cập nhật với phản hồi của máy chủ, nếu có và kích hoạt sự kiện change tương ứng.
  6. Gọi lại thành công hoặc lỗi được gọi, sự kiện sync được kích hoạt nếu không xác định lại cuộc gọi thành công.

Thông thường, bạn có thể tùy chỉnh hành vi này bằng cách ghi đè model.toJSON hoặc model.sync

+2

Bước sáu thay đổi trong Backbone 0.9.9. Xem http://backbonejs.org/#changelog Sự kiện "đồng bộ hóa" và "lỗi" hợp nhất trong Backbone.sync. Chúng bây giờ được kích hoạt bất kể sự tồn tại của thành công hoặc gọi lại lỗi. –

-1

đầu tiên, tôi đề nghị bạn đọc mã nguồn của xương sống, thực sự là rất simple.Default xương sống và server-side tương tác được thực hiện thông qua backbone.sync.

giây, Bạn có thể theo dõi phương thức gỡ lỗi model.save của mã một lần nữa, tự nhiên biết chi tiết. Tôi khuyên bạn nên bắt đầu ở đây : http://backbonejs.org/examples/todos/index.html

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