假设我想让这个变量成为一个常量,以便在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');
如果没问题,我该如何在控制器中调用它?
答案 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;
}]);