Javascript Ember.js:如何注入应用程序设置

Javascript Ember.js:如何注入应用程序设置,javascript,ember.js,ember-cli,ember-cli-addons,Javascript,Ember.js,Ember Cli,Ember Cli Addons,我正在编写一个emberjs应用程序,其中我编写了一个自定义组件来从sprite文件加载图像。但是,我希望使组件通用,并能够从模板中指定的文件加载任何图像。例如,我希望能够做到以下几点: {{svg-icon css-class="" svg-sprite="svgs/svg-sprites.svg" svg-id="special"}} 我能够让组件正常工作,但是我想更进一步,而不是每次在config/environment.js下的应用程序设置中配置svg文件时都输入/指定svg文件 因此

我正在编写一个emberjs应用程序,其中我编写了一个自定义组件来从sprite文件加载图像。但是,我希望使组件通用,并能够从模板中指定的文件加载任何图像。例如,我希望能够做到以下几点:

{{svg-icon css-class="" svg-sprite="svgs/svg-sprites.svg" svg-id="special"}}
我能够让组件正常工作,但是我想更进一步,而不是每次在config/environment.js下的应用程序设置中配置svg文件时都输入/指定svg文件

因此,我想我应该编写一个ember初始值设定项,将ENV.APP config对象注入到我的所有组件中。因此,在我的应用程序初始值设定项中,我有以下代码:

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(函数(){
返回get(Ember.getOwner(this.resolveRegistration('config:environment'),'svgPath');
}),