在角度配置中同时注入服务和提供者

时间:2015-04-15 08:52:17

标签: angularjs angular-ui-router

我有一个角度配置:

(function () {
    'use strict';

    angular
        .module("app.functionality")
        .config(config);

    //  +------------------------------------------------------------------+
    //  |   Implementations                                                |
    //  +------------------------------------------------------------------+
    config.$inject = ["$stateProvider"];

    function config($stateProvider) {
        $stateProvider.state("aState", {
                url: "/:idf/:idc",
                views: {...},
                resolve: {
                    aPromise: function ($stateParams) {
                        return {
                            idf: $stateParams.idf,
                        };
                    }
                },
            });
    }
})();

和其他地方:

(function () {
    'use strict';

    angular
        .module("MyService", [])
        .factory("myService", service);

    service.$inject = ["$http"];

    function service($http)
    {
        // implementations
    }
})();

这很有效,我可以获得idf价值。我真正想要的是:

  • 处理不同的状态(我可以使用$ stateProvider轻松完成)
  • 使用resolve函数返回更丰富的基于状态的数据

应该通过服务检索这些更丰富的数据(在idf属性之后)

richerSetOfData: aService.getSomething($stateParams.idf)

但是我知道我不能将服务注入config(只是提供者)。我可以使用run,但运行不适合提供程序(我需要$ stateProvider)。那我怎么能做我需要的呢?什么是最佳实践?

1 个答案:

答案 0 :(得分:0)

哟可以在解析功能中注入服务:

       resolve: {
            aPromise: ['$stateParams', 'myService', function ($stateParams, myService) {
                return {
                    idf: myService.doSmthng($stateParams.idf)
                };
            }]
        },