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

4

我正在编写一个Ember.js应用程序,其中我编写了一个自定义组件来从精灵文件中加载图像。然而,我希望使该组件通用,并能够从模板中指定的任何文件中加载任何图像。例如,我想能够执行以下操作:

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

我已经成功让组件运作了,但我想更进一步,不想每次都输入/指定一个svg文件,我希望在config/environment.js应用设置中配置该文件。
因此,我打算编写一个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插件中可用?

感谢您的帮助。

1个回答

0
如果你想在插件中使用应用程序配置,可以使用Ember.getOwner()方法。这种方法非常有效。

例如,在组件文件中,你可以添加类似以下的内容:
svgPath: computed(function () { return get(Ember.getOwner(this).resolveRegistration('config:environment'), 'svgPath'); }),


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接