angularjs-将$rootscope变量设置为来自$http.get()的json
目前,我的测试设置如下:angularjs-将$rootscope变量设置为来自$http.get()的json,angularjs,Angularjs,目前,我的测试设置如下: app.run(function($rootScope, $http, $location) { url = $location.path() + '/raw'; $rootScope.test = 'hi'; $http.get(url).success(function(data) { $rootScope.test = data.personality; console.log($rootScope.test);//A });}) app.con
app.run(function($rootScope, $http, $location) {
url = $location.path() + '/raw';
$rootScope.test = 'hi';
$http.get(url).success(function(data) {
$rootScope.test = data.personality;
console.log($rootScope.test);//A
});})
app.controller("Big5", function ($scope, $http, $location, $rootScope) {
console.log($rootScope.test);}//B
//A处的console.log按预期工作-它从url记录JSON。但是,//B处的console.log只返回“hi”,即初始$rootscope.test变量。有办法解决这个问题吗
我应该提到,需要这样做的页面调用控制器来呈现一个图形。为什么B处的值被记录为“hi”,是因为在执行控制器函数时的值中有这样的值。为了使用HTTP服务调用的结果设置值,您应该在控制器函数中调用它。i、 e
app.controller("Big5", function($rootScope, $http){
$http.get(url).success(function(data) {
$rootScope.test = data.personality;
})
}
更一般地说,使用根范围是不好的做法,我建议改用$scope服务:请阅读$httpAh的异步性质是的-这是我第一次尝试时实现的方式;但是,我有许多控制器,它们根据从这个http调用接收到的数据创建多个图;因此,将http调用放入每个控制器将导致许多调用,以便在以后解析时获得基本相同的数据。从中调用此数据的API具有每次调用的成本,因此最好使用一个中心调用。