Добавление резолвера в angular routeProvider в конфиге
Я начинаю работать с угловым шаблоном 1.x и у меня 1 проблема, я не могу отправить обещание решателя из сервиса
function ExampleService($http) {
'ngInject';
const service = {};
let getTasks = ()=> {
return $http.get('tasks');
};
service.isReady = new Promise((resolve, reject)=> {
getTasks().then(
(data) => {
resolve(data);
},
(err, status) => {
reject(err, status);
});
});
return service;
}
экспорт по умолчанию {имя: 'ExampleService', fn: ExampleService }; Но когда я пытаюсь внедрить,y службы к on_config.js у меня есть ошибка
Uncaught Ошибка: [$injector:modulerr] Не удалось создать экземпляр приложения модуля из-за: Ошибка: [$injector:unpr] Неизвестный поставщик: ExampleService
Мой штатпровайдер
$stateProvider
.state('Home', {
url: '/',
controller: 'ExampleCtrl as home',
templateUrl: 'home.html',
title: 'Home',
resolve:{example:ExampleService.isReady}
})
Возможно, я делаю что-то не так или вы можете подсказать, как я могу реализовать логику для предварительной загрузки некоторых данных в приложение перед рендерингом первого контроллера
PS ссылка на боллерплату
1 ответ
Службы не могут быть внедрены в блоки конфигурации. Они должны быть введены в функции распознавателя:
$stateProvider
.state('Home', {
url: '/',
controller: 'ExampleCtrl as home',
templateUrl: 'home.html',
title: 'Home',
resolve:{
example: function (ExampleService) {
return ExampleService.isReady();
}
})
Так же isReady
должно быть функцией, а не новым обещанием:
service.isReady = () => {
return getTasks().then(response => response.data);
}