我有一個組件工作得很好,現在我需要在控制器內調用它。Ember:從控制器調用組件動作
場景:我有一個應用程序,我有一個更新按鈕控制器,我做了一個組件,只是顯示一個吐司(Materializecss)作爲參數傳遞給組件,並且按鈕和吐司都是單獨運作良好。我需要在按鈕控制器內部調用這個組件,以便在更新成功或者沒有使用這個組件的情況下向用戶顯示。如何在控制器內調用這個組件的任何消息?謝謝
我有一個組件工作得很好,現在我需要在控制器內調用它。Ember:從控制器調用組件動作
場景:我有一個應用程序,我有一個更新按鈕控制器,我做了一個組件,只是顯示一個吐司(Materializecss)作爲參數傳遞給組件,並且按鈕和吐司都是單獨運作良好。我需要在按鈕控制器內部調用這個組件,以便在更新成功或者沒有使用這個組件的情況下向用戶顯示。如何在控制器內調用這個組件的任何消息?謝謝
看看我創建的ember-twiddle,看看它是否符合法案,關於你想要做什麼?
您應該不是想着「調用組件」,而是應該如何將更新的屬性/數據推送到組件。
Ember依賴於「Data Dow Actions Up」模式。這意味着您無法從控制器明確調用組件操作。 (例如,參見https://dockyard.com/blog/2015/10/14/best-practices-data-down-actions-up)
相反,更好的設計應該是定義一個服務來管理數據:要「烘烤」的消息。然後通過在控制器中注入來提供此服務。您將能夠調用方法來註冊新消息並生成新數據。
還提供一個組件模板(將包含在您自己的模板中),負責顯示新消息等。服務管理的數據中的每個更改都會導致組件模板更新。
你不能「來電」來自外部的組件。您可以將它傳遞給一個屬性,然後根據屬性做任何你想要的,包括如果你真的需要觀察它。但是模板會自動觀察屬性並根據其值調整DOM。 – 2016-04-22 13:56:22
感謝您的回答,但我沒有好轉。 Supose我有一個叫做callback-toast.js的組件,裏面有一個名爲'run'的動作,在用戶的屏幕上運行吐司,我也有一個名爲button-controller.js的控制器。在按鈕控制器內部,我怎樣才能做出觸發組件的參考? –
你不能。這不是組件的工作方式。 – 2016-04-22 16:38:38