Как я могу получить пространство имен включающего приложения в 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...
}
});