访问Angular UI路由器中的常量

时间:2018-04-24 09:07:53

标签: angularjs angular-ui-router

我有一个常量文件。

var app = angular.module('ops.services');

app.constant('opsConstants', {
    GID: 'UA1'
});

app.service('OpsConstantService', OpsConstantService);

OpsConstantService.$inject = ['opsConstants'];

function OpsConstantService(opsConstants){
    this.OPSCONSTANTS = opsConstants;

}

My app module取决于相同内容,并且已提供 DI

var opsApp = angular.module('opsApp', ['ui.router',  'ops.services', 'angular-momentjs']);

现在,在我的应用中,routing我需要访问常量值。

opsApp.config(routerConfig);

routerConfig.$inject = ['$stateProvider', '$urlRouterProvider'];

function routerConfig($stateProvider, $urlRouterProvider) {
    $urlRouterProvider.otherwise("/home/dashboard/");

    $stateProvider
        .state('Modal', {
            url: '^/modal/{obj_id}/{name}/{tab_id}/{start_date}/{end_date}/{repos}',
            resolve: {
                ModalTabs: ['OpsConstantService',function(OpsConstantService){
                    return OpsConstantService.opsConstants.GID;
                }]

            },
            views: {
                'repo@': {
                    templateUrl: function(stateParams) {
                        debugger; // I am not able to get the GID value here
                        var tab_id = stateParams.tab_id;
                        return 'src/modals/nodes/' + tab_id + '/' + 'my_bp.html';
                    }
                },

我正在尝试resolve但是唉!什么都行不通。

如何访问常量值以便我可以动态配置要呈现的模板?

更新

如果我这样做,

routerConfig.$inject = ['$stateProvider', '$urlRouterProvider','OpsConstantService'];

function routerConfig($stateProvider, $urlRouterProvider,OpsConstantService) {

我收到injector module错误。

1 个答案:

答案 0 :(得分:0)

您的问题是不同的角度自举阶段。简短说明:

状态声明在angular的.config阶段内。在这个阶段,angular.service不可用(旁注:在angular.run阶段,它们是可用的)。

如果您需要,您需要将服务构建为angular.provider,而在此阶段可以访问它们。此外,您的常数本身也应该可用。