Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
angularjs-将$rootscope变量设置为来自$http.get()的json_Angularjs - Fatal编程技术网

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具有每次调用的成本,因此最好使用一个中心调用。