【问题标题】:What is the best way to define a constant in an Angular controller?在 Angular 控制器中定义常量的最佳方法是什么?
【发布时间】:2017-11-10 12:15:03
【问题描述】:

我目前将我的常量放在 $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;
    }
});

【问题讨论】:

标签: javascript angularjs controller constants


【解决方案1】:

只需在 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;
    }
});

(虽然特定的类常量可能应该从某个地方加载...)

【讨论】:

  • 啊,这很有道理,非常感谢:)
【解决方案2】:

如果你想把所有的常量放在一个地方,另一种方法是如下声明常量。

 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;
    }); 

【讨论】:

  • 这很有用,这是否意味着我可以将我的常量作为依赖注入?
  • 是的,您可以在控制器中注入常量作为依赖项。
猜你喜欢
  • 2018-02-01
  • 2018-11-05
  • 2017-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多