以角度加载后访问父控制器$ scope数据

时间:2016-06-08 21:10:14

标签: angularjs angular-promise angular-controller

我有角度的以下情况:

  1. 我将init()上的数据库中的json数据加载到变量" data"并希望使用变量" data"在子控制器中(嵌套)。
  2. 因为从数据库加载需要一些时间,子控制器中的变量$ scope.data输出为" undefined"。
  3. 处理这种情况的优雅方法是什么?我是否需要在子控制器内的父进程方法上使用promise?我将很感激一个例子:)。

    // Parent Controller
    app.controller('pCTRL', function($scope) {
      $scope.init = function(id){} 
      //sets my variable $scope.data successfully via a rest API
      //and for test, sets $scope.x to "blabla"
    }
    
    //Child Controller
    app.controller('cCTRL', function($scope) {
    console.log($scope.x); //outputs blabla properly
    console.log($scope.data); // undefined
    

    感谢您的反馈!

1 个答案:

答案 0 :(得分:1)

常见的解决方案是使用观察者。例如:

app.controller('cCTRL', function($scope) {
    $scope.$watch('data', function(newVal){
        console.log(newVal); // outputs actual value
    });
}

只有在指令中需要逻辑时才需要这样做。如果您只想在data模板中显示cCTRL,则不需要上述观察者,当父母更改时,angular会更新模板。