2014-10-02 63 views
1

我有一個全局變量聲明在角上下文之外:如何在angularjs應用程序中包含全局變量?

var globalv =「Hello」;

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

$scope.somevar = globalv + "_"; 

什麼是包括在我的angularjs應用/上下文globalv最簡單的方法?當我嘗試以上述方式引用它時,出現錯誤。

回答

2

我會考慮在包裝的角度恆定值,這將使你注入它只有在其需要

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

1

你有什麼理由不能將它包含在角度上下文中嗎?如果它絕對需要是全局的,您可以將它添加到角度範圍內的根目錄。

/* 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

相關問題