在AngularJS中提供全局配置

时间:2014-11-19 22:10:14

标签: angularjs angularjs-service

目前我为我的应用程序提供了一个名为" config"的常量。注入一些特定的应用程序范围的配置,如API端点URL等。

这与我的主要模块" app"在配置部分。

app.config(['config', function(config) {
    console.log(config.api); // http://api.endpoint.com
}];

问题是,我有一个单独的模块,如" app.auth"我希望你用这个全局常量中的一些值配置它,但是我得到一个错误,配置是未知的。

我怎么能解决这个问题?在配置区域中注入服务并不是解决方案,因为AngularJS不会在配置块上提供服务。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

首先,您回答有关为什么'config'无法用于您的应用的问题。 您的应用是否设置为“app.auth”的依赖项?

var app = angular.module('myApp', ['ngResource']);
var authApp = angular.module('myApp.auth', ['myApp']);

其次使用常量来设置多个值是常量的不良使用,这对于提供者来说是一个很好的工作。这是一个例子:

module.provider('GlobalConfig', function ($resourceProvider) {
    var valOne = 'Some Default';
    this.setOne = function(value) {
        valOne = value;
    };

    var valTwo = 'Another Default';
    this.setTwo = function(value) {
        valTwo = value;
    };

    this.$get = function($resource) {
        return {
            getOne: function() {
                return valOne;
            },
            getTwo: function() {
                return valTwo;
            }
        };
    };

});

从.config中可以使用'GlobalConfigProvider'注入上面的提供者,只有setter才可用。然后,对于指令和服务,可以注入'GlobalConfig',只有getter可用。