У меня есть приложение, построенное на Ember-cli. Я пытаюсь внедрить метод во все маршруты, контроллеры и представления. Я знаю, что могу использовать каталог app/utils
и импортировать модуль метода во все файлы, которые его вызывают, но я бы хотел, чтобы метод был доступен автоматически. Следовательно, я решил внедрить метод с помощью инициализатора.
Инициализатор выглядит так:
export default {
name: 'injectMethod',
initialize: function(container, app) {
var someFunction = function(message) {
};
app.register('function:main', someFunction);
Em.A(['route', 'controller', 'view']).forEach(function(place) {
app.inject(place, 'someFunction', 'function:main');
});
}
};
В результате появляется следующее сообщение об ошибке: Uncaught TypeError: undefined is not a function
. Ошибка исчезает при удалении строки app.inject()
.
По-разному ли инициализаторы обрабатываются в ember-cli и / или что-то в приведенном выше коде неверно? Или это лучший способ достичь моей цели, чем использование инициализатора?
App
недоступен глобально, потому что вы регистрируете отдельные модули. - person Duncan Walker   schedule 21.07.2014