在res中将解析器添加到angular routeProvider中

时间:2017-01-03 07:29:20

标签: angularjs service boilerplate resolver

我开始使用angular 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;

}

export default {     名称:' ExampleService',     fn:ExampleService }; 但是,当我尝试注入,y服务on_config.js我有错误

  

未捕获错误:[$ injector:modulerr]由于以下原因无法实例化模块应用程序:   错误:[$ injector:unpr]未知提供者:ExampleService

我的stateProvider

$stateProvider
    .state('Home', {
    url: '/',
    controller: 'ExampleCtrl as home',
    templateUrl: 'home.html',
    title: 'Home',
    resolve:{example:ExampleService.isReady}
    })

也许我做错了什么或者你可以建议如何在渲染第一个控制器之前将一些数据预加载到应用程序中的假设逻辑

P.S。链接到bolerplate

1 个答案:

答案 0 :(得分:0)

服务无法注入配置块。它们需要注入旋转变压器功能:

$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);
}