Ember.js 如何在Ember CLI加载项中获取包含应用程序的命名空间?

Ember.js 如何在Ember CLI加载项中获取包含应用程序的命名空间?,ember.js,ember-cli,ember-addon,Ember.js,Ember Cli,Ember Addon,我正在创建一个Ember CLIEmber加载项,在加载项的文件中,我需要访问应用程序的配置。我无法知道包含此插件的应用程序将命名为什么,因此我不能像在应用程序本身中那样简单地从“app name/config/environment”导入ENV 如何从插件本身访问使用ember插件的应用程序的命名空间,以便从该应用程序导入内容?一种可能性是使用初始值设定项: Ember.Application.initializer({ name: 'my-component', initia

我正在创建一个Ember CLI
Ember加载项
,在加载项的文件中,我需要访问应用程序的配置。我无法知道包含此插件的应用程序将命名为什么,因此我不能像在应用程序本身中那样简单地从“app name/config/environment”导入ENV


如何从插件本身访问使用
ember插件的应用程序的命名空间,以便从该应用程序导入内容?

一种可能性是使用
初始值设定项:

Ember.Application.initializer({
    name: 'my-component',
    initialize: function(container, app) {
        // you have access to 'app' here...
    }
});

要获取配置,不需要获取名称空间。
插件所需的任何设置都应添加到
config/environment.js
中的
ENV.APP

例如,如果您想要一个
MY\u APP\u KEY
设置,您需要类似
ENV.APP.MY_APP_KEY='ABCDEF'
已添加到
config/environment.js

然后,您可以使用初始值设定项读取应用程序实例的属性,并通过执行以下操作将其注入到插件中

export default {
  name: "my initilizer",

  initialize: function(container, app) {

    //get you setting off of the app instance
    var key = app.get('MY_APP_KEY');

    //register it
    app.register('config:myAddonKey', key, { instantiate: false });

    //inject it where you want to access it
    app.inject('route', 'myAddonKey', 'config:myAddonKey'); 
  }
};

您可以在

中看到一个示例,说明我无法可靠地访问应用程序或容器。例如,一个简单的
utils/assethost.js
如何关心
ENV.environment