С ui-router
Я создал состояние, которое имеет одно из его видов, отображающее текущий статус пользователя. Следующий код получает текущий статус пользователя:Инициируйте контроллер, который зависит от разгруженной зависимости
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
?