2013-05-22 27 views
5

Tôi đang xây dựng công cụ chọn ba chiều: các công ty, phòng ban và người dùng.Cách sử dụng đúng sự kiện trong Backbone

enter image description here

Tôi đang cố gắng tìm ra cách tốt nhất để cấu trúc này trong ứng dụng Backbone của tôi. Đây là vấn đề hiện tại tôi đang gặp phải.

Giả sử người dùng đã chọn một công ty. Sau đó, các phòng ban và các bộ sưu tập sử dụng sẽ được áp dụng và giao diện sẽ cập nhật: sau đó

enter image description here

Người dùng có thể chọn một bộ phận từ danh sách, mà sẽ tiếp tục tinh chỉnh cho người dùng lựa chọn. Điều này tôi đã làm việc tốt.

Hoặc, người dùng có thể chuyển thẳng đến Danh sách người dùng và tìm người dùng (trước tiên không phải chỉ định bộ phận). Trong trường hợp này, chế độ xem cho cả phòng ban và người dùng cần cập nhật:

  1. Sở nên được chọn trên bộ phận của người dùng.
  2. Người dùng nên tinh chỉnh tất cả người dùng trong bộ phận người dùng được chọn, thay vì tất cả người dùng trong công ty đã chọn.

Tôi đang đấu tranh với cách tốt nhất để thực hiện việc này. Cho đến nay, bộ sưu tập departmentsusers của tôi có thuộc tính selected, vì vậy đó là cách tôi duy trì trạng thái. Hiện nay tôi đang làm một cái gì đó giống như

  • Khi người sử dụng chọn một bộ phận, quan điểm khoa
    1. Sets bộ phận chọn trực tiếp trên departments bộ sưu tập
    2. Kích hoạt một sự kiện
    3. Bộ sưu tập người dùng nghe sự kiện, xóa mọi người dùng đã chọn và kích hoạt một sự kiện khác
    4. Chế độ xem người dùng sẽ nghe sự kiện và hiển thị lại. Kể từ khi nó biết về bộ sưu tập các bộ phận, nó biết một bộ phận đã được lựa chọn và rằng nó nên tinh chỉnh cho người sử dụng xuống bộ phận

Tôi làm điều này vì nếu tôi có quan điểm chỉ kích hoạt sự kiện (không có trước tiên, thiết lập thuộc tính được chọn của phòng ban), tôi sẽ có điều kiện chủng tộc: cả bộ phận và bộ sưu tập người dùng sẽ phản hồi sự kiện và tùy thuộc vào thời gian người dùng có thể không được tinh chỉnh đúng cách.

Phần thứ hai:

  • Khi người sử dụng chọn một tài khoản (mà không chỉ định một bộ phận), quan điểm người dùng
    1. Thiết lập người dùng được lựa chọn trực tiếp trên users bộ sưu tập
    2. Thiết lập chọn bộ phận trực tiếp trên bộ sưu tập departments (mà nó biết)
    3. Kích hoạt sự kiện

và đây là nơi tôi bị kẹt. Bộ sưu tập các phòng ban không thực sự cần phải làm bất cứ điều gì, vì tài sản được lựa chọn của nó đã chính xác; thực sự, quan điểm của nó chỉ cần tái render. Và quan điểm của người dùng cũng vậy.

Nhưng đây không phải là tất cả, bởi vì có rất nhiều thứ khác có thể xảy ra. Tôi cảm thấy như nó không thể kiểm soát được.

  • Tốt nhất để cấu trúc điều này là gì?
  • Tôi có đang sử dụng sự kiện đúng cách không?
  • Làm cách nào để bạn xử lý chế độ xem cần nghe về các chế độ xem khác và các bộ sưu tập khác thay đổi?

Cập nhật: Tôi có nên sử dụng tuyến đường để lưu trạng thái ứng dụng không? Điều này có thể đơn giản hóa mọi thứ ...

Cập nhật 2:This question đã giúp ích cho tôi. Có một mô hình riêng biệt để quản lý nhà nước chắc chắn có vẻ là con đường để đi.

Cập nhật 3: Có một mô hình riêng biệt để lưu trữ trạng thái + sử dụng jQuery deferreds thật tuyệt vời. Nghiêm túc. Nó hoàn thành tôi.

Trả lời

2

Tôi thấy hữu ích khi sử dụng mô hình để theo dõi trạng thái. Bằng cách đó bạn có thể truyền mô hình đó xung quanh các chế độ xem khác nhau và không có lượt xem trực tiếp tham chiếu.

Bạn có thể sử dụng các sự kiện được xây dựng và tùy chỉnh trên mô hình tiểu bang để quản lý các chuyển đổi trạng thái.

Trong bộ sưu tập trường hợp của bạn sẽ không cần lưu trữ selected. Thay vào đó, selectedUserselectedDepartment có thể là các thuộc tính của mô hình tiểu bang. Sau đó, bạn có thể có logic trong mô hình của mình kích hoạt sự kiện tùy chỉnh ('cập nhật: người dùng: xem' hoặc 'cập nhật: các phòng ban: chế độ xem') tùy thuộc vào những gì được chọn.

Tôi hy vọng điều đó có ý nghĩa.

+0

Tôi thích điều này - Tôi sẽ cung cấp cho nó một shot và lấy lại cho bạn! –

+0

Bạn có sử dụng các sự kiện để giao tiếp từ xem-> tiểu bang và tiểu bang-> bộ sưu tập và quay lại không? Hay bạn cung cấp cho nhà nước tài liệu tham khảo cho tất cả mọi thứ và chỉ cần gọi chức năng trực tiếp? Hoặc một số kết hợp? –

+0

Có vẻ như lượt xem phải có tham chiếu trực tiếp đến trạng thái để chúng có thể sử dụng thuộc tính của nó khi hiển thị. Đồng ý? –

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