簡體   English   中英

Ember.js:如何注入應用程序設置

[英]Ember.js: How to Inject application settings

我正在寫一個emberjs應用程序,我寫了一個自定義組件來從精靈文件加載圖像。 但是,我想使組件通用,並能夠從模板中指定的文件加載任何圖像。 例如,我希望能夠執行以下操作:

{{svg-icon css-class="" svg-sprite="svgs/svg-sprites.svg" svg-id="special"}}

我能夠讓組件工作,但后來我想進一步,而不是每次我想在config / environment.js下的應用程序設置中配置文件時鍵入/指定svg文件

所以,我以為我會寫一個ember初始化器,它會在我的所有組件中注入ENV.APP配置對象。 所以在我的應用程序初始化程序中,我有以下代碼:

export function initialize(registry, application) {
  application.register('config:main', window.MyApp, {instantiate: false});
  application.inject('component', 'config', 'config:main');
}

以上工作完美,在我的組件javascript文件中,我可以簡單地做:

this.get('config').SPRITE_LOCATION;

獲取精靈文件的位置。

但我想知道這是否是正確的方法? 有沒有更好的方法呢? 如果我將組件更改為CLI插件會更好嗎? 我如何訪問應用程序配置並將其提供給我的cli插件?

謝謝您的幫助。

這種方法效果很好,如果要在插件中使用應用程序配置,可以使用Ember.getOwner()方法。

例如,在組件文件中,您可以添加類似的內容:
svgPath: computed(function () { return get(Ember.getOwner(this).resolveRegistration('config:environment'), 'svgPath'); }),

暫無
暫無

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

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