Как получить ссылку на application в глобальной области видимости

Решил востановить рубрику вопросов по EmberJS. Теперь каждый вопрос будет отдельной заметкой. Начнем с относительно простого вопроса, который уже написан в заголовке — «Как получить ссылку на Ember-application в глобальном контексте?»

Это можно сделать, написав свой initializer. В качестве аргумента Ember передает в него ссылку на application, которую можно сохранить в контексте window. Пример:

// app/initializers/my.js
export function initialize(application) {
  window.App = application;
}
 
export default {
  name: 'my',
  initialize
};

В качестве App можно выбрать любое имя. В том числе можно воспользоваться и modulePrefix из конфига приложения (config/environment.js). Пример:

// app/initializers/my.js
import Ember from 'ember';
import config from '../config/environment';
 
export function initialize(application) {
  var appName = Ember.String.classify(config.modulePrefix);
  window[appName] = application;
}
 
export default {
  name: 'my',
  initialize
};

Обертка Ember.String.classify (доки) используется, чтоб получить корректное имя для ключа (без пробелов, минусов и подчеркиваний).

Да, под данную задачу есть официальный аддон для Ember (ember-export-application-global), который выполняет описанные выше действия.

В версиях Ember до 2.0, в initializer передавалось два параметра. При чем, application был вторым (см. deprecations v2.x).

, ,

Оставить комментарий

Top ↑ | Main page | Back