Как я могу получить пространство имен включающего приложения в Ember CLI Addon?

Я создаю Ember CLI ember-addonи в файлах моего аддона мне нужен доступ к конфигу приложения. У меня нет возможности узнать, как будет называться приложение, включая этот аддон, поэтому я не могу просто сделать import ENV from 'app-name/config/environment' как я мог бы в самом приложении.

Как я могу получить доступ к пространству имен приложения, которое использует ember-addon из самого аддона, чтобы я мог импортировать вещи из этого приложения?

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.

Одна из возможностей заключается в использовании initializer:

Ember.Application.initializer({
    name: 'my-component',
    initialize: function(container, app) {
        // you have access to 'app' here...
    }
});
Другие вопросы по тегам