将$ RootsCope变量设置为$ http.get()的JSON



当前我的测试设置就是这样:

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

console.log at//a的作品按预期工作 - 它可以从URL记录JSON。但是,console.log at//b只是返回'hi',是初始$ rootscope.test变量。有任何解决这个问题的方法吗?

我应该提到所需的页面调用控制器以呈现图。

B的值记录为'hi'的原因是,这是在执行控制器函数时的值。为了使用HTTP服务调用的结果设置值,您应该在控制器函数中调用此值。即

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

通常,使用根部范围是不好的做法,建议使用$示波器服务:(

最新更新