从单独的JS文件中检索常量\字符串值

时间:2015-02-27 07:04:22

标签: javascript jquery angularjs string

我正在开发一个Angular JS应用程序。 我想知道在代码中包含字符串值的最佳做法是什么。

我打算使用另一个包含所有常量值的JS文件。我将在每个JS(Controller)中调用此JS文件来引用字符串值。

5 个答案:

答案 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;
    }]);