從結構上講,控制器不知道有關視圖(通常),它當然不知道其他控制器視圖。控制器也不知道其他控制器。有時這些鬆散耦合的組件需要能夠進行通信,但最佳實踐不是將它們緊密耦合在一起。是否有一個消息框架插件允許不同的組件在應用程序內發送和接收全局消息?有沒有更好的方式來處理這種通信?Ember.js路由器應用程序體系結構 - 如何在鬆散耦合的組件之間正確通信
回答
使用類似jQuery.Callbacks創建pub/sub集線器不會太困難。但是,這不是典型的Ember.js應用程序的一部分。
當發生什麼事情需要在負責控制器的範圍之外傳達時,模式是將操作發送到路由器,當前狀態可以處理它。路由器/狀態管理器是應用的協調者,並且可以通過向其他控制器和/或模型發送消息和/或通過轉換到另一狀態來響應該動作。
我想在一個演講中,我最近給了圖本:http://www.lukemelia.com/devblog/archives/2012/08/23/architecting-ember-js-apps/
謝謝盧克:)。在本演示中,您也提到了connectControllers,所以我認爲這是在控制器之間共享數據的好方法。這就是爲什麼我提出這個評論。我錯了嗎? –
@ sly7_7當一個控制器顯示另一個控制器的數據時,connectControllers很棒。但是,wmarbut提出了一個更普遍的問題,即在Ember應用程序中如何使用不同的組件進行通信。 –
Humm一如既往,很好的解釋。再次感謝:)我認爲我必須告訴@tomdale兩個字,他想要這樣的主題文件。我認爲使用connectControllers或者發送到路由器的例子都會是一件好事。 –
我還是新的灰燼,但不會Ember Instrumentation在這種情況下是有用的?它允許發佈和訂閱自定義事件。很好的解釋可以在this answer中看到。
我認爲兩者都有效。當@Luke發佈了他的答案時,確信Ember Instrumentation不在 –
- 1. 實體框架和應用程序體系結構(鬆耦合等)
- 2. 如何使框架和相關應用程序鬆散耦合?
- 3. 如何使數據與應用程序代碼鬆散耦合?
- 4. 面向服務的體系結構和鬆散耦合與SQL連接
- 5. 如何實現JDBC驅動程序和源代碼之間的鬆散耦合?
- 6. Ember.js使用路由器體系結構獲取父路由的控制器
- 7. 與實體框架的鬆散耦合
- 8. Django在應用程序中鬆散耦合
- 9. Javascript的體系結構/應用程序結構最佳實踐?
- 10. 使應用層鬆散耦合
- 11. 構建MVC ASP.NET應用程序,使用MEF的n層鬆散耦合
- 12. JMS路由鬆散耦合的設計模式
- 13. Netty:如何在鬆散耦合的服務上共享ChannelHandleContext
- 14. 鬆散耦合的觀察者模式
- 15. 設計鬆散耦合組件用的GTK事件模型
- 16. 如何鬆散地耦合.NET應用程序中的數據庫列?
- 17. F中的鬆散耦合代理#
- 18. 如何讓兩個Maven項目鬆散耦合?
- 19. 如何在Angular混合應用程序中的組件之間進行通信?
- 20. C#:應用程序之間的解耦通信
- 21. Backbone.js&Require.js - 應用程序組件無法與路由器通信
- 22. 如何構建鬆散耦合的gradle任務屬性?
- 23. 正確的體系結構SPA和Angular 2中的多個組件的路由
- 24. 鬆散耦合的視圖內模型通知w/Veto選項
- 25. .net應用程序體系結構
- 26. ember.js中的路由結構
- 27. 建模鬆散耦合域模型
- 28. MVVM:的ViewModels的鬆散耦合
- 29. 在C#中COM的鬆散耦合或如何避免COMException 0x80040154
- 30. SOA中通知的鬆耦合
也許這個問題可以幫助你:http://stackoverflow.com/questions/12799293/ember-js-connectcontrollers#comment17329873_12799293和http://emberjs.com/api/classes/Ember.ControllerMixin.html#method_connectControllers –
@ sly7_7謝謝!這有幫助,它感覺有點駭人聽聞,但它會起作用。我只是討厭強烈的聯結;它感覺不到必須讓他們意識到彼此。 – wmarbut
是的,但現在,我不知道如何做到這一點沒有connectControllers :( –