Tình huống: Một tiện ích tự động điền với bộ điều khiển và chế độ xem của riêng nó sao cho thành phần mô-đun có thể được hiển thị ở bất kỳ chế độ xem nào khác với {{render "autocomplete"}} hoặc có thể {{control}} trợ giúp khi nó được chuyển ra khỏi giai đoạn thử nghiệm. Để làm cho tự động hoàn thành độc lập với mọi thứ khác, nó không nên biết về bộ điều khiển chính hoặc hành động nào xảy ra khi một mục được chọn.Làm thế nào để vượt qua các sự kiện giữa các bộ điều khiển trong Emberjs? Cập nhật: Cách thiết kế tự động điền trong Ember
Tôi đã cố gắng tìm cách sử dụng mixin Ember.Evented để tôi có thể kích hoạt sự kiện từ tự động hoàn thành như itemSelected, sau đó có thể bong bóng lên và bị bắt bởi chế độ xem hoặc bộ điều khiển chính.
Vì vậy, như mọi khi, tài liệu của Ember thiếu. Đặc biệt là khi nói đến Ember.Evented. (Để công bằng, tài liệu đã đi một chặng đường dài, nhưng tôi vẫn muốn nhiều hơn. Họ nói Công ước về cấu hình mà không cung cấp quy ước!) Dù sao, đủ phàn nàn, tài liệu cho thấy sự kiện xảy ra trên các đối tượng chung và tôi tìm thấy bài đăng này sâu hơn một chút: Does EmberJs support publish/subscriber eventing pattern? nhưng tôi nghĩ rằng một ví dụ thực tế hơn với bộ điều khiển, chế độ xem, tuyến đường và thành phần như tự động hoàn thành sẽ tuyệt vời.
Tôi nghĩ rằng các loại sự kiện này được cho là trách nhiệm của các khung nhìn nhưng điều đó không có tác dụng nên tôi cũng đặt mixin lên bộ điều khiển. Điều này sẽ có ý nghĩa khi bạn nhìn thấy jsFiddle
Trong đó, bạn sẽ thấy bộ điều khiển tự động hoàn thành giả nhận một tập hợp nội dung tĩnh từ vật cố và hiển thị hai nút cho mỗi mục mà bạn có thể nhấp để kích hoạt sự kiện từ chế độ xem hoặc bộ điều khiển. Trong ví dụ thực, đầu vào trong hộp văn bản sẽ được quan sát và nội dung sẽ được cập nhật để trình bày các đề xuất khác nhau dựa trên đầu vào nhưng điều đó không quan trọng đối với ví dụ này.
jsFiddle: http://jsfiddle.net/wCfb9/ Tôi nghi ngờ hầu hết các dòng: this.on("myEvent", this.addItem);
kể từ khi chức năng kích hoạt sự kiện này rõ ràng được gọi, nhưng nó như thể sự kiện này không tuyên truyền hoặc bộ điều khiển chỉ số và xem là không thực sự thiết lập đúng cách để trả lời sự kiện.
Dưới đây là những câu hỏi chính:
gì tôi cần phải thay đổi để điều khiển chỉ số có thể đáp ứng với một sự kiện kích hoạt bởi các autocomplete?
Cách MVC phù hợp nhất để đạt được điều này là gì? Nên kích hoạt/nhận được trên xem/điều khiển?
Có cách nào tốt hơn để thực hiện việc này không?
Side lưu ý: giải pháp hiện tại của tôi cho điều này là thêm một needs: ["index"]
trong bộ điều khiển tự động hoàn và thay vì kích hoạt các sự kiện, tôi kêu gọi chỉ rõ ràng phương pháp trong điều khiển chỉ số từ bộ điều khiển tự động hoàn. Điều này có nhiều vấn đề, đầu tiên nó là một sự kết nối chặt chẽ giữa các bộ điều khiển, và không mở rộng tốt nếu việc tự động hoàn thành được cho là ảnh hưởng đến nhiều bộ điều khiển hoặc được tái sử dụng ở nơi khác và phải được cấu hình lại, v.v ...
Hy vọng tôi giải thích rằng đủ rõ ràng. Tất cả trợ giúp đều được đánh giá cao.
Wow. Câu hỏi này được hỏi gần một năm trước, và vẫn không có câu trả lời về cách sử dụng Ember.evented trên hai bộ điều khiển. Backbone có một câu chuyện làm việc cho việc này. AngularJS có một câu chuyện làm việc cho việc này. Ember có tài liệu nửa nướng và một câu chuyện không hoạt động cho các sự kiện. – Purrell