2012-03-23 34 views
6

Tôi thực sự thích khái niệm về hành động ExtJS. Tôi đã xem at this example và đó là (gần như) chính xác những gì tôi cần. Chỉ có điều là tôi đang cố gắng sử dụng mẫu MVC. tôi có:Hành động ExtJS ở đâu phù hợp với mẫu MVC

  • invoicelist (xem)
  • Inovice (controller)
  • Invoice (model)
  • Hoá đơn (cửa hàng)

ở đâu và làm thế nào để tôi đặt định nghĩa cho hành động ? Họ có nên ở trong bộ điều khiển không? Làm thế nào để gọi cho họ và tham khảo họ? Tôi cần một số hành động và họ sẽ có trong menu ngữ cảnh và trong menu trong thanh công cụ của hóa đơn.

Trả lời

6

Câu hỏi hay. Có vẻ như hành động phá vỡ mô hình MVC bằng cách nào đó kết hợp các mô hình View và Controller dưới một mái nhà. Bởi vì họ có trình xử lý, họ mang chức năng với họ cũng như các yếu tố giao diện người dùng như văn bản và biểu tượng. Tuy nhiên chúng không phải là các thành phần - trong ý nghĩa của ExtJS. Do đó bạn không thể nhắm mục tiêu chúng bằng bộ chọn.

Cách tốt nhất để nghĩ về chúng là đối tượng cấu hình. Không nhiều không ít. Một đối tượng config là vô nghĩa bởi chính nó - và không thể được nhắm mục tiêu. Tương tự với Hành động. Họ thực sự có thể được sử dụng như một đối tượng cấu hình cho các nút ví dụ.

Bây giờ họ nên đi đâu? Câu trả lời cho rằng tôi đoán là thực sự tùy thuộc vào bạn như một nhà thiết kế. Vì họ không xác nhận mẫu MVC nghiêm ngặt, bạn có thể đưa ra quyết định dựa trên mức độ rộng rãi mà bạn cần một hành động cụ thể có thể truy cập được. Đối với một hành động thực sự toàn cầu được chia sẻ bởi nhiều khung nhìn, bạn thậm chí có thể đặt nó trong cấu hình ứng dụng: Ví dụ: MyApp.app.actions ["delete"]. Bộ điều khiển có thể là một nơi tốt để đặt nó nếu bộ điều khiển đó sẽ định cấu hình nhiều chế độ xem và kết nối chúng với nhau bằng các cửa hàng. Chúng có khả năng tạo ra nhiều lượt xem với các tác vụ được chia sẻ.

Hy vọng điều này sẽ hữu ích. Chúc may mắn :)

+0

Cảm ơn. Tôi hiện đang cố gắng tạo một số Hành động sẽ được sử dụng trong một chế độ xem. Đó là cửa sổ với thanh công cụ và lưới. Hành động sẽ xuất hiện trong menu con thanh công cụ và trong menu ngữ cảnh khi người dùng nhấp chuột phải vào hàng lưới. Đối với kịch bản này, tôi tin rằng tôi nên đặt nó trong Controller cho cửa sổ này, phải không? Làm sao? Tôi đã sử dụng để nối các sự kiện từ bộ điều khiển đến các khung nhìn nhưng không biết cách INSERT các đối tượng trong giao diện người dùng. – Milan

+0

Điều tôi sẽ làm sau đó là tạo các hành động trong lớp chế độ xem của bạn và có trình xử lý tác vụ kích hoạt một số sự kiện tùy chỉnh. Trong lớp điều khiển của bạn, bạn có thể nghe những sự kiện tùy chỉnh phát ra từ chế độ xem của bạn. – dbrin

+0

Đoạn mã để kích hoạt các sự kiện tùy chỉnh từ các hành động sẽ được đánh giá cao. – Milan

1

chỉ cần thực hiện một someview.fireEvent('Yourcustomevent');

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