如何在angularjs应用程序中包含全局变量?

问题描述:

我有一个全局变量声明在角上下文之外:如何在angularjs应用程序中包含全局变量?

var globalv =“Hello”;

此变量不会更改。我想要使​​用它的指令......

$scope.somevar = globalv + "_"; 

什么是包括在我的angularjs应用/上下文globalv最简单的方法?当我尝试以上述方式引用它时,出现错误。

我会考虑在包装的角度恒定值,这将使你注入它只有在其需要

var myApp = angular.module('myApplication',[]); 
myApp.constant('myConstant', globalv); 

只要确保定义你的角模块之前globalv变量定义。

我比使用rootcope /全局变量更好,因为您可以控制值的使用者是谁。

你可以注入像这样的常数:

mayApp.directive('myDirective',['myConstant', 
     function (myConstant) { 
      return { 
       .. 
     }; 
}]); 
+0

这个常数是否可以用于我的指令?我可以使用: $ scope.somevar = myConstant? – Rolando 2014-10-02 04:13:15

+0

增加了一个例子 – TGH 2014-10-02 04:16:21

你有什么理由不能将它包含在角度上下文中吗?如果它绝对需要是全局的,您可以将它添加到角度范围内的根目录。

/* declare rootscope variables when the angular app starts*/ 
angular.module('someApp').run(function ($rootScope) { 
    $rootscope.globalv = "Hello"; 
}); 

然后,您可以在角度应用程序中的任意位置引用该rootcope变量。

这对我来说很简单,但我个人讨厌使用$ rootScope,除非必须。你应该尽量远离全局变量。

+0

我已经包含在我的index.html具有所有angular.module(“someApp”)一个js文件...我想注入globalv在我的index.html页面中(它几乎不包含javascript),在你的答案中,如果包含代码的脚本标记存在于包含应用程序开始的js文件之前或之后,是否存在(angular.module ('someApp'))? – Rolando 2014-10-02 02:54:12

+0

如果你打算使用角度,我建议把所有的逻辑放在你的角码里,我不确定为什么你需要在你的角码之外的脚本标签中有一个变量。 – 2014-10-02 12:01:30