Добавление резолвера в 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);
}
Другие вопросы по тегам