如何创建这个全局常量以在Angularjs中的控制器之间共享?

时间:2014-03-28 08:34:16

标签: javascript angularjs angularjs-service

假设我想让这个变量成为一个常量,以便在Angularjs中的控制器之间共享;

$webroot = "localhost/webroot/app"

经过一番调查后,服务似乎就是这样做的。但最好的方法是什么?我是否使用工厂,服务,价值或其他东西?

来自angularjs-master-seed的services.js位于下方;

angular.module('myApp.services', []).value('version', '0.1');

如何将其修改为具有可在控制器之间共享的常量$ webroot?

我可以执行以下操作吗?

angular.module('myApp.services', [])
        .value('version', '0.1')
        .constant('webroot','localhost/webroot/app');

如果没问题,我该如何在控制器中调用它?

2 个答案:

答案 0 :(得分:4)

当你想要更多常量时会发生什么?如何添加可以在需要的地方注入的配置对象。作为单个文件,使用dev.config和prod.config文件也更容易,可以在构建时交换进出。

app.factory('Config', function(){
    return{
        webRoot: "localhost/webroot/app",
        moreSettings: "abc"
    };
});

答案 1 :(得分:3)

如果您的变量具有常量值或设置一次value是正确的选择 您可以这样定义:

app = angular.module('myApp', []);
app.value('$webroot', 'localhost/webroot/app');

现在您可以将服务注入控制器并使用它:

app.controller('myController', ['$scope', '$webroot', function($scope, $webroot) {
  $scope.webroot = $webroot;
}]);

编辑#1
为了适应您更新的问题:您可以使用与值相同的常量:

app = angular.module('myApp', []);
app.constant('$webroot', 'localhost/webroot/app');

app.controller('myController', ['$scope', '$webroot', function($scope, $webroot) {
  $scope.webroot = $webroot;
}]);