【问题标题】:Ember.js: How to Inject application settingsEmber.js:如何注入应用程序设置
【发布时间】:2015-07-26 00:28:26
【问题描述】:

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

{{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 插件?

感谢您的帮助。

【问题讨论】:

    标签: javascript ember.js ember-cli ember-cli-addons


    【解决方案1】:

    这种方法效果很好,如果你想在插件中使用应用配置,你可以使用 Ember.getOwner() 方法。

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

    【讨论】:

      猜你喜欢
      • 2016-11-11
      • 1970-01-01
      • 2012-12-21
      • 1970-01-01
      • 2020-11-28
      • 1970-01-01
      • 2012-05-17
      • 2014-05-29
      • 1970-01-01
      相关资源
      最近更新 更多