在控制器初始化之后,在.run()中执行$ http调用

时间:2015-01-10 18:50:54

标签: angularjs

我正在尝试进行$http调用,以便将JSON存储到Angular应用中$rootScope函数中的.run(),但调用是在加载控制器后完成的。我无法使用来自通话的任何数据。任何人都可以帮我解决这个问题吗?

还尝试了解console.log会发生什么,输出为"b",然后"a"$rootScope.xmlundefined

var app = angular.module('lobby', ['ngRoute']);

app.run(['$rootScope','$http', function($rootScope, $http) {
    $http.get(Main.constants.BASEURL+'x.xml').success(function(xml) {
        $rootScope.xml = $.xml2json(xml.data);
        console.log('a');
    });
}]);

app.controller('CategoriesController', function($rootScope) {
    console.log($rootScope.xml);
    console.log('b');
});

1 个答案:

答案 0 :(得分:1)

您可以尝试在$watch上放置一个$rootScope.xml并听取一个新值,该值应在$http来电解决时发生。 xml范围变量值会发生变化。

<强>代码

app.controller('CategoriesController', function($rootScope) {
    $rootScope.$watch('xml', function(newValue, oldValue) {
        if($rootScope.xml) {
            console.log($rootScope.xml);
        }
    });
});