在AngularJs中设置全局常量

时间:2016-07-14 05:47:44

标签: angularjs constants angularjs-components

我正在尝试在角度js中为应用程序创建常量js文件。我使用下面的代码来实现整个应用程序的常量。它工作正常。

<code>
// app.js
angular.module('myApp', [
        'ngCookies',
        'ngResource',
        'ngSanitize',
        'ngRoute'
    ])
    .constant('config', {
        mySetting: 42
    })
    .config(function ($routeProvider) {
        $routeProvider
            .when('/', {
                templateUrl: 'views/main.html',
                controller: 'MainCtrl'
            })
            .otherwise({
                redirectTo: '/'
            });
    });
</code>

我关心的是在app.js文件中我想只写路由,对于常量我想写单独的文件,我会为我的应用程序中的所有控制器调用相同的文件。

对于整个应用程序可能是我要声明的200多个常量,所以我想使它成为控制器方面的单独文件或拆分常量文件。

请指导我哪种方式易于维护。

提前致谢

3 个答案:

答案 0 :(得分:2)

您可以通过这种方式定义常量

app.value('config', {
   "key1": "value1",
   "key2": "value2"
});

并且在控制器中您可以通过这种方式访问 config.key1config.key2。通过这种方式,您可以根据需要定义常量。

  

注意:不要忘记给config提供参考/注入。

此致

答案 1 :(得分:2)

您还可以使用另一个模块来维护单独的文件,以处理所有常量,工厂,服务或值。为了处理你的常量,下面的代码将给你和想法

例如:

在您的app.js脚本文件

之后包含您的constant.js文件
var myApp = angular.module("myApp", ['myConstants']); //constants module injection
myApp.controller("myController", ["$scope", "myValue", function() {
....
}]);

在你的constant.js

angular.module("myConstants", []).constant('myValue', 'The value');

有关更多信息,请参阅http://www.learn-angular.org/#!/lessons/handling-complexity

答案 2 :(得分:0)

让我们假设你想在你的应用程序中有一个名为serviceUrl的常量。这是一种简单的方法

angular.module('myApp', ['ngRoute'])
.value('serviceUrl','http://localhost:8080/hello')

'ngRoute'是可选的。如果你的应用程序没有使用ngRoute,请忽略它。

可以在服务中访问它作为发布一些数据

angular.module('myApp').
service('myService', ['$http', 'serviceUrl',function($http,serviceUrl){
    this.getData= function(data){
        console.log(JSON.stringify(data));
        return $http({
            method: 'POST',
            url: serviceUrl
            data: data
        })

}}