我正在开发一个Angular JS应用程序。 我想知道在代码中包含字符串值的最佳做法是什么。
我打算使用另一个包含所有常量值的JS文件。我将在每个JS(Controller)中调用此JS文件来引用字符串值。
答案 0 :(得分:4)
您可以像角度
一样定义常量angular.module('moduleName',[]).constant('constName',string|object|array);
您可以注入指令或控制器或任何您想要的地方。
angular.module('moduleName',[]).directive('directiveName', ['constName', function(constName){...});
答案 1 :(得分:2)
您有几种选择。
全球价值。您可以以javascript对象的形式使用常量,该对象可以在整个应用程序中全局访问。例如,您的文件可能如下所示:
config = {
host: 'domain',
port: '1234'
};
明显的缺点是这些值实际上不是常量,很容易改变,因此容易出错。
Angular配置模块。更可靠,更清晰的选择是创建一个单独的模块,用作主应用模块的依赖项。对于常量,您仍然会有单独的文件,但是这个文件将保留具有常量服务的角度模块,而不是一些全局变量。像这样:
angular.module('app.config', []).constant('config', {
host: 'domain',
port: '1234'
});
然后在主应用程序中,您将配置类似
的应用程序angular.module('app', ['app.config']).config(function(config) {
// console.log(config);
});
答案 2 :(得分:0)
Angular有一种提供常量的内置方式,例如:
angular.module('foo', ['ngRoute']) // Your angularjs module
// Decide a name for the bucket of constants, then just declare the
// constants in turn as an object literal:
.constant("HTTP_CONSTANTS", {
"URL": "http://localhost",
"PORT": "80"
})
然后你可以使用依赖注入加载它foo
模块的任何地方加载它,即:
angular.module('foo')
.controller('bar', function (HTTP_CONSTANTS) {
... // Use HTTP_CONSTANTS.URL or HTTP_CONSTANTS.PORT, for example
})
这是使用常数的一个很好的入门读物:
http://twofuckingdevelopers.com/2014/06/angularjs-best-practices-001-constants/
答案 3 :(得分:0)
以下是示例代码;
var app = angular.module('plunker', []);
app.constant('configs', {host:'localhost',port:8080});
app.controller('MainCtrl', function($scope, configs) {
$scope.name = configs.host;
});
这里是demo plunker
答案 4 :(得分:0)
您可以将工厂用于此目的,并将此工厂注入您想要这些常量的地方。
var app=angular.module('Myapp', []);
app.factory('ConstantService', function(){
var constant={temp:'c'};
var getConstants=function(){
return constant;
};
return{
constants:getConstants;
}
});
app.controller('MyController',['ConstantService' function (ConstantService){
var constant= ConstantService.constants;
}]);