2011-09-05 44 views
5

Tôi có một kịch bản chi tiết tổng thể cổ điển mà tôi đang triển khai trong backbone.js.Backbone.js Kịch bản chi tiết chính

Hiện tại tôi không quan tâm đến lịch sử và phần điều hướng của backbone.js nên tôi bỏ qua nó.

  • Tôi có GridView nơi tất cả các mô hình được tìm nạp và hiển thị từ dịch vụ còn lại.
  • Tôi có một DetailView (cửa sổ phương thức) trong đó một mô hình được chọn cụ thể từ một lưới được hiển thị với nhiều trường xuất hiện trong chế độ xem lưới chính.

tôi đã thực hiện:

  • một ứng dụng chính nơi mà tất cả các quan điểm xương sống và router được đính kèm.
  • ứng dụng được khởi tạo trên tài liệu nạp
  • một router Backbone chính (hành động hơn là một "điều khiển" cổ điển) với trách nhiệm:
    • tạo và quan điểm phá hủy
    • quyến rũ và đăng tải dữ liệu
    • qua dữ liệu để xem
    • phối hợp quan điểm sự kiện

Bây giờ dữ liệu được trả về từ dịch vụ còn lại cho GridView (Bộ sưu tập xương sống) chỉ là một phần dữ liệu một phần của các mô hình.

Vì vậy, để hiển thị chi tiết đầy đủ của một kiểu máy cụ thể, tôi phải tìm nạp lại chi tiết từ dịch vụ còn lại.

Tìm nạp từ mô hình kết thúc với mô hình bị ngắt kết nối khỏi bộ sưu tập và mọi cập nhật trên đó không được phản ánh trên bộ sưu tập và tôi phải làm mới lại chế độ xem chính tìm nạp tất cả dữ liệu.

Phá hủy và tạo lại chế độ xem chi tiết đôi khi khiến cho sự kiện chế độ xem bị mất.

Việc triển khai chính xác kịch bản này là gì? Tôi không hoàn toàn hiểu được cách tốt nhất để làm những việc trong xương sống.

Trả lời

7

Trước tiên, tôi khuyên bạn nên trả lại chi tiết đầy đủ cho các mô hình trong truy vấn thu thập "gridView" của bạn. Điều này giải quyết vấn đề 'thu thập kết nối'.

Mặc dù, bạn không phải thực hiện tải toàn bộ bộ sưu tập - giả sử tải toàn bộ cho toàn bộ bộ sưu tập sẽ không hoạt động - ví dụ: chi tiết quá lớn, bạn có thể vượt qua cùng một mô hình từ bộ sưu tập vào chế độ xem chi tiết của bạn, kiểm tra xem liệu tải một phần hay tải đầy đủ và đưa ra "fetch()" cho mô hình, trả về toàn bộ dữ liệu - rằng đây là mô hình giống như trong bộ sưu tập, nó sẽ được cập nhật. Điều đó có ý nghĩa? Ngoài ra, đối với các chế độ xem chi tiết, tôi sẽ đề nghị, đặc biệt nếu bạn chỉ thiết kế cuộc gọi cho một chế độ xem chi tiết đang hoạt động, sử dụng lại chế độ xem và viết hàm trong chế độ xem cho phép bạn hoán đổi mô hình.

Vì vậy, trong bản tóm tắt:

  • On bắt đầu ứng dụng, tải một GridView và một DetailView.
  • refactor chi tiết của bạn Xem để cho phép các mô hình được đặt trên đó. (detailView.setModel (..)
  • khi người dùng muốn xem chi tiết trên mô hình, chuyển mô hình đó vào chi tiếtXem bằng cách sử dụng chức năng ở trên.
  • nếu mô hình không được tải đầy đủ, phương thức setModel của bạn có thể Bạn có thể kiểm tra một thuộc tính cụ thể chỉ có trên toàn bộ tải hoặc đặt thuộc tính trên mô hình để cho biết liệu thuộc tính của nó có được tải đầy đủ hay không.
  • Nếu bạn thấy mình mất sự kiện, hãy thử gọi delegateEvents() ở cuối hàm render() của bạn để khôi phục các sự kiện.
  • Vì cùng một mô hình đang được sử dụng trong cả bộ sưu tập GridView và detailView, giả sử bạn đang phản hồi sự kiện thay đổi đúng, đêm trước rything nên được đồng bộ hóa.
Các vấn đề liên quan