angularjs - 从$ http.get()将$ rootscope变量设置为json

时间:2017-06-29 01:37:57

标签: 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.controller("Big5", function ($scope, $http, $location, $rootScope) {
  console.log($rootScope.test);}//B

// A上的console.log按预期工作 - 它从URL中记录JSON。但是,// B上的console.log只返回' hi',最初的$ rootscope.test变量。有任何解决这个问题的方法吗?

我应该提到需要它的页面调用控制器来呈现图形。

1 个答案:

答案 0 :(得分:1)

B处的值被记录为'hi'的原因在于它在执行控制器功能时的值。为了使用HTTP服务调用的结果设置值,您应该从控制器函数中调用它。即

app.controller("Big5", function($rootScope, $http){
   $http.get(url).success(function(data) {
      $rootScope.test = data.personality;          
   })
}

更一般地说,使用root作用域是不好的做法,我建议使用$ scope服务:)