一尘不染

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

angularjs

假设我想将此变量设为一个常量,以便在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');

如果可以,如何在控制器中调用它?


阅读 221

收藏
2020-07-04

共1个答案

一尘不染

如果变量具有恒定值或设置一次,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;
}]);
2020-07-04