これが私がやっていることを達成するための最良の方法であるかどうかは本当にわからず、より良い提案に対して非常にオープンです.
OAUTH2
データベースでユーザー情報を検索し、変数として保存するユーザー アカウント システムを使用しています$rootScope.userInfo
。これは、私のアプリのbody
;に追加されたコントローラーにあります。ここでは、最高レベルのコントローラーがその中にあるコントローラーよりも先にロードされると考えていましたが、どうやらそうではないようです。
$rootScope.userInfo
データベースからこのオブジェクトをロードする前に、このオブジェクトにアクセスしようとするビューをロードするとmainCtrl
、javascript エラーがスローされてAngular
中断します。
参考までに、テンプレートの大まかなアイデアを次に示します。
<body ng-controller="mainCtrl">
<header>Content</header>
<div class='main-view' ng-controller="userProfile">
<p>{{user.name}}</p>
<p>{{user.email}}</p>
</div>
</body>
私はこのようにロード$rootScope.userInfo
しmainCtrl
ています:
$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';
});
次に、私のuserProfile
コントロールのために、次のことを行います。
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);
}
}
を呼び出さないアプリ内の別のページからアクセスしている場合$rootScope.userInfo
、API はそれを検索するのに十分な時間があり、userProfile
ページは正常に動作します。ただし、ページ全体を更新すると、$rootScope.userInfo
ロードする時間がなく、エラーが発生します。
どうすればこれを修正できますか?