2012-02-22 38 views
10

Một tính năng của ứng dụng Backbone của tôi liên quan đến việc liên kết các mô hình loại A với các kiểu B, được thực hiện bằng cách kéo chế độ xem A vào chế độ xem B. Trong lớp xem B tôi nghe sự kiện thả xuống và từ điều này tôi nhận được phần tử DOM của chế độ xem A, nhưng không có thông tin nào về mô hình A.Sử dụng tính năng kéo/thả của giao diện người dùng jQuery với backbone.js

Cách tốt nhất để truy xuất thông tin này là gì? dự đoán tốt nhất của tôi cho đến nay là

  • có mô hình Một lưu một tham chiếu đến chính nó trong không gian tên của ứng dụng, loại bỏ thông tin này kết thúc kéo nếu handler thả đã chưa làm như vậy
  • lửa một sự kiện trên xem Một , đi qua một tài liệu tham khảo để mô hình B cùng với sự kiện này, và sau đó có mô hình một gọi một phương thức của mô hình B ...
  • cửa hàng mô hình A là một thuộc tính $ .data của view một

nhưng tất cả những cách tiếp cận dường như phức tạp/không thích hợp.

+0

Nếu bạn có thể lấy phần tử DOM, phần tử DOM có được liên kết với id của mô hình theo bất kỳ cách nào không? Giống như id của phần tử hoặc một số trường dữ liệu bạn đã đặt trên đó? – kinakuta

+0

Không. Đây sẽ là một cách hợp lý để đi về nó, nhưng tôi không muốn phải tìm kiếm theo id khi mô hình đã được liên kết phức tạp với quan điểm - có vẻ như lãng phí để đánh mất mô hình và sau đó phải tìm nó lần nữa. – wheresrhys

+0

Tôi biết ý bạn là gì, nhưng sự tương tác giữa hai mô hình là loại ảo tưởng - các mô hình chỉ là biểu diễn của dữ liệu khi thực tế điều đang xảy ra là sự kiện DOM bắn. Lấy dữ liệu từ DOM có vẻ như một bước cần thiết vì các mô hình không thực sự thay đổi theo bất kỳ cách nào. – kinakuta

Trả lời

4

Lưu trữ dưới dạng thuộc tính dữ liệu thực sự khá sạch sẽ và hiệu suất sẽ không tệ. Bạn có thể lưu trữ thuộc tính cid của mô hình là data-cid trên DOM el và sử dụng phương thức getByCid của bộ sưu tập để truy xuất mô hình.

0

Tôi nghĩ rằng cách sạch nhất để đi về nó là như kinakuta được đề cập trong một nhận xét để liên kết phần tử dom với mô hình bằng cách sử dụng id trong ví dụ: a data-attribute.

Điều này có ý nghĩa từ quan điểm triển khai vì nó cho phép bạn có sự phụ thuộc hai chiều và bạn có thể tham khảo một cách dễ dàng sau này khi ứng dụng của bạn trở nên phức tạp hơn.

Giải pháp được đề cập của bạn sẽ hoạt động tốt, tuy nhiên, tôi cảm thấy Giải pháp A có vẻ hơi khó hiểu, Giải pháp B ít mã khôn ngoan hơn và Giải pháp C cơ bản giống như sử dụng thuộc tính dữ liệu.

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