ui-router
現在のユーザー ステータスを表示するビューの 1 つを持つ状態を作成しました。次のコードは、現在のユーザー ステータスを取得します。
var sydney = sydney || {};
sydney.checkAuth = function() {
gapi.auth.authorize({
client_id : sydney.CLIENT_ID,
scope : sydney.SCOPES,
immediate : true
}, sydney.handleAuthResult);
}
sydney.handleAuthResult = function(authResult) {
if (authResult) {
// The user has authorized access
console.log("User is signed in");
} else {
// User has not Authenticated and Authorized
console.log("User is not signed in");
}
}
は次のstate
ように定義されます。
$stateProvider
.state('route1', {
url: "/route1",
views : {
"headerView" : {
templateUrl : 'partials/header.html',
controller: 'LoginController'
},
"navigationView" : {
templateUrl : 'partials/navigation.html',
controller: 'NavigationController'
},
"contentView": {
templateUrl : 'partials/content1.html'
}
}
})
LoginController
:_
function LoginController($scope, $state) {
$scope.checkUserStatus = function() {
sydney.checkAuth();
}
}
これらのパーツをすべて接着する必要があるため、headerView
が表示されたときに、ユーザーの状態 (ログインしているかどうか) を表示できます。
LoginController
私が最初にしたことは、ステータスを保持するために変数を作成することです
$scope.userStatus = sydney.checkAuth();
問題は、 が作成された時点でロードされていないsydney.checkAuth
に依存していることです。だから私は完全に理にかなっています。Google APIs Client Library for JavaScript
LoginController
gapi is not defined
別の解決策は、(コールバックで) がロードされた$scope.userStatus
後に初期化することです。gapi
しかし、どのようにコントローラに更新するように指示します$scope.userStatus
か?