内部函数的全局变量-Javascript

时间:2018-11-15 07:13:16

标签: javascript angularjs global-variables

我正在尝试编写一个Angular代码,该代码将从其他URL中读取常量并将这些常量放入当前的常量模块中。

这是我的示例Javascript:

var application = angular.module('mainApp', [])
.run(['$http', function($http){

alert('h1');

var gc;

var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        console.log(this.response);
        window.gc = this.response;
    }
  };
  xhttp.open("GET", "myconst.properties", true);
  xhttp.send();

  alert(window.gc);


}]).controller('myController', function($scope, $rootScope) {
$scope.greetMessage = $rootScope.data;
});

无论我使用run之类的provider还是configalert(window.gc)总是返回未定义的内容,即使我使用的是$http而不是{{1 }},它保持不变。我没有使用Angular常量,因为其中有大量常量。我在当前的脚本页面中避免使用该常量列表。

任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

  

在此处使用了$ rootScope指令

var application = angular.module('mainApp', [])
.run(['$http','$rootScope', function($http,$rootScope){

alert('h1');

var gc;
$rootScope.gc = {};

var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        console.log(this.response);
        window.gc = this.response;
        $rootScope.gc = this.response;
    }
  };
  xhttp.open("GET", "myconst.properties", true);
  xhttp.send();

  alert($rootScope.gc);

}])
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="mainApp">

</div>