Assegurando que um controlador AngularJS seja carregado antes de outro

Vou começar com o fato de que realmente não tenho ideia se essa é a melhor maneira de conseguir o que estou fazendo e estou muito aberto a sugestões melhores.

Eu tenho um sistema de conta de usuário usandoOAUTH2 que fica procura informações do usuário no meu banco de dados e salva como uma variável,$rootScope.userInfo. Isso reside em um controlador que é anexado ao aplicativo do meu aplicativo.body; aqui eu estava pensando que o controlador de nível mais alto carregaria antes daqueles que vivem dentro dele, mas aparentemente não.

Se eu carregar uma visão que tenta acessar este$rootScope.userInfo objeto antes do meumainCtrl teve a chance de carregá-lo do meu banco de dados, ele lança um erro de javascript eAngular rompe.

Para referência, aqui está uma ideia aproximada do modelo:

<body ng-controller="mainCtrl">
    <header>Content</header>
    <div class='main-view' ng-controller="userProfile">
        <p>{{user.name}}</p>
        <p>{{user.email}}</p>
    </div>
</body>

Estou carregando$rootScope.userInfo emmainCtrl como isso:

$http.get('/api/users/' + $cookies.id).
    success(function(data) {
      $rootScope.userInfo = data.user[0];
      console.log("User info is:");
      console.log($rootScope.userInfo);
      $scope.status = 'ready';
    });

Então para o meuuserProfile controle, eu faço:

function userProfile($scope, $cookies, $http, $routeParams, $rootScope){
  if($scope.status == 'ready'){
    $scope.user = $rootScope.userInfo;
    console.log("Double checking user info, here it is:");
    console.log($rootScope.userInfo);
  }
}

Se eu estou vindo de uma página diferente no aplicativo que não chama$rootScope.userInfo, a API tem tempo suficiente para procurar e minhauserProfile página funciona bem. No entanto, se fizer uma atualização de página inteira, o$rootScope.userInfo não tem tempo para carregar e eu recebo erros.

Como posso consertar isso?

questionAnswers(2)

yourAnswerToTheQuestion