Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
角度常数vs javascript常数_Javascript_Angularjs - Fatal编程技术网

角度常数vs javascript常数

角度常数vs javascript常数,javascript,angularjs,Javascript,Angularjs,假设我有一个全局常量,需要在每个角度模块中都可以访问,那么声明该常量的可取方法是什么。我脑子里有三种方法,但我不确定该用哪一种 如果有人能指出在这种情况下使用方法2与方法1相比有什么好处,我将不胜感激。 方法1(纯js常数): 方法2(纯角常数) 方法3(js和角常数的混合) 建议使用常量: (函数(角度,未定义){ "严格使用",; angular.module('myApp.constants',[]) .constant('appConfig',{userRoles:['guest','

假设我有一个全局常量,需要在每个角度模块中都可以访问,那么声明该常量的可取方法是什么。我脑子里有三种方法,但我不确定该用哪一种

如果有人能指出在这种情况下使用方法2与方法1相比有什么好处,我将不胜感激。

方法1(纯js常数):

方法2(纯角常数)

方法3(js和角常数的混合)


建议使用
常量

(函数(角度,未定义){
"严格使用",;
angular.module('myApp.constants',[])
.constant('appConfig',{userRoles:['guest','user','admin']});

})(角度)在方法1中,您创建了一个全局变量
jsConstants
,我认为这不是一个好的做法-如果可能,您应该避免创建全局常量。此外,
jsConstants
的属性并不是真正的常量,任何人、任何地方都可以更改它们。此外,使用全局常量会降低控制器的可测试性(单位),因为它们将依赖于此全局对象


在方法2中,我认为不允许更改这些值,因此它们更像是常量。您将它们注入控制器,因此它们仍然是可单元测试的。

1和2是相同的。您可以创建一个服务并注入它。让服务返回常量。@zerkms我已经用一种角度的方式更改了2Exist的代码<代码>角度.module('myApp')。常量('Cons',{})
。然后你可以在你的控制器中进行注入。你可以用常量创建单独的文件。我很困惑。方法1中的常量不可重用是什么意思?在我看来,方法1 javascript常量可以通过以下方式在每个控制器中重用:var jsConstant在另一个js文件中,js文件在主布局加载应用程序中加载?如果有另一个模块重用/修改这些变量呢?
var jsConstant = {
    constant1: 'constant1',
    constant2: 'constant2'
};

angular.module('mainApp').controller(['$scope', function($scope) {
    $scope.constant1 = jsConstant.constant1;
    $scope.constant2 = jsConstant.constant2;
}]);
angular.module('mainApp').constant('angularConstant', {
    'constant1': 'constant1',
    'constant2': 'constant2'
});


angular.module('mainApp').controller(['myConstant', '$scope', function(myConstant, $scope) {
    $scope.constant1 = angularConstant.constant1;
    $scope.constant2 = angularConstant.constant2;
}]);
var jsConstant = {
    constant1: 'constant1',
    constant2: 'constant2'
};

angular.module('mainApp').constant('angularConstant", {
    'constant1': jsConstant.constant1;
    'constant2': jsConstant.constant2;
});


angular.module('mainApp').controller(['myConstant', '$scope', function(myConstant, $scope) {
    $scope.constant1 = angularConstant.constant1;
    $scope.constant2 = angularConstant.constant2;
}]);