簡體   English   中英

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

[英]What is the best way to define a constant in an Angular controller?

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

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

(盡管該特定類型的常量可能應該從某個位置加載...)

如果要將所有常量放在一個位置,則另一種方法是聲明常量,如下所示。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM