簡體   English   中英

灰燼成分和依賴注入

[英]Ember Component and Dependency Injection

我有一個簡單的初始化程序,可將單例類注入視圖和組件。 當我在模板中使用組件時

{{component-name}}

然后,我可以從組件訪問注入的對象。

如果我通過代碼創建組件的實例:

comp = App.ComponentNameComponent.create()

注入的對象為null。

注入僅適用於通過模板添加的組件嗎? 我需要做一些特別的事情來注入要以編程方式管理的組件嗎?

為了使依賴項注入起作用,您必須從容器中查找組件。 當您在模板中使用組件時,Ember會執行此操作,但是當您直接實例化一個組件時,這不會發生。 因此,如果要注入該屬性,則應使用如下容器:

comp = container.lookup('component:component-name');

通過Ember容器查找的每個對象(路線,控制器,視圖等)都會自動添加一個container屬性。 因此,假設您想在控制器中創建組件的實例,則可以這樣做:

comp = this.get('container').lookup('component:component-name');

該容器沒有公共文檔,所以我的建議是只閱讀源代碼

您的組件需要由容器創建才能正確注入所有內容。

var comp = this.container.lookup('component:component-name');

容器創建的對象將container對象自動注入其中。 換句話說,僅當容器創建了上下文對象時,以上代碼才有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM