在Angular控制器中定义常量的最佳方法是什么?

时间:2017-11-10 12:15:03

标签: javascript angularjs controller constants

我目前把常量放在$ scope上。我不认为这是最好的方法,因为任何人都可以使用他们的JS控制台访问作用域。

在Angular中定义常量的最佳方法是什么?

var app = angular.module('app', []);

app.controller('calculatorController', function($scope) {
    $scope.values = [];

    $scope.CONSTANTS = {
        ERROR_MESSAGES: {
            NOT_INTEGER: "One of the values input was not a number!"
        }
    };

    $scope.add = function () {
        var calculatedValue = 0;
        for (var i = 0; i <= $scope.values; i++) {
            if (typeof $scope.values[i] === 'string' || $scope.values[i] instanceof String) {
                alert($scope.CONSTANTS.ERROR_MESSAGES.NOT_INTEGER);
            }

            calculatedValue += $scope.values[i];
        }
        return calculatedValue;
    }
});

2 个答案:

答案 0 :(得分:0)

只需将其变为controller回调中的变量(如果使用TypeScript或ES2015 + JavaScript,则为const):

var app = angular.module('app', []);

app.controller('calculatorController', function($scope) {
    var ERROR_MESSAGES = {
        NOT_INTEGER: "One of the values input was not a number!"
    };

    $scope.values = [];

    $scope.add = function () {
        var calculatedValue = 0;
        for (var i = 0; i <= $scope.values; i++) {
            if (typeof $scope.values[i] === 'string' || $scope.values[i] instanceof String) {
                alert(ERROR_MESSAGES.NOT_INTEGER);
            }

            calculatedValue += $scope.values[i];
        }
        return calculatedValue;
    }
});

(虽然特定的类型的常量应该可以从某处加载...)

答案 1 :(得分:0)

如果你想在一个地方使用所有常数,另一种方法是将常数声明如下。

 var app = angular.module('app', []);
  angular.module('AppName').constant('versionConstant', { 
       "versionNum":"1.22"
   });

  // And inject them in your  controller

  angular.module(AppName).controller(ControllerName, ['$scope','versionConstant', 
    function ($scope, versionConstant) {
         var version=versionConstant.versionNum;
    });