如何在Ember CLI Addon中获取包含应用程序的命名空间?

时间:2014-09-02 19:17:42

标签: ember.js ember-cli ember-addon

我正在创建Ember CLI ember-addon,在我的插件文件中,我需要访问应用的配置。我无法知道包含此插件的应用程序的名称,因此我不能像应用程序本身那样简单地import ENV from 'app-name/config/environment'

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

2 个答案:

答案 0 :(得分:2)

您不需要获取命名空间即可获得配置 您的插件所需的任何设置都应添加到ENV.APP中的config/environment.js

例如,如果您想要MY_APP_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'); 
  }
};

您可以在Ember Django Adapter

中查看其完成方式的示例

答案 1 :(得分:0)

一种可能性是使用initializer

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