Во-первых, я сделал небольшое приложение Ember без Ember CLI.Как сделать инъекцию зависимости в Ember с Ember CLI?
У меня была эта часть кода.
window.MyApp = Ember.Application.create({
ready: function() {
this.register('session:current', MyApp.SessionController, { singleton: true });
this.inject('controller', 'session', 'session:current');
}
});
Это сработало.
Затем я решил переписать все с нуля с помощью Ember CLI.
Я отредактировал файл app/app.js
и добавил крючок ready
, как и в моей предыдущей версии.
var App = Ember.Application.extend({
modulePrefix: config.modulePrefix,
podModulePrefix: config.podModulePrefix,
Resolver: Resolver,
ready: function() {
this.register('session:current', App.SessionController, { singleton: true });
this.inject('controller', 'session', 'session:current');
}
});
Это не работает.
Контроллер сеанса связи существует. Это содержимое файла app/controllers/session.js
export default Ember.Controller.extend({
isLoggedIn: false,
});
Сообщение об ошибке я получаю
TypeError: Attempting to register an unknown factory: `session:current`
Он появляется в браузере.
Я разобрал это сообщение, но ничего не нашел об инъекции зависимостей в Ember CLI.
Любая идея?
Какой разницы между службой и инициализатором? –
Услуга - это просто реализация того, чего вы хотите достичь. Инициализатор подключается к запуску приложения и позволяет запускать код во время запуска (например, настройка и ввод службы), поскольку инициализаторы загружаются автоматически, а не по требованию. Это намного чище, чем взломать его в app.js. – Leeft
Я запускал 'ember g service', и это также генерирует инициализатор, поэтому, я думаю, мне не нужно запускать' ember g initializer'? –