Чтобы преобразовать auth2.signIn()
обещание в $q
сервисное обещание, интегрированное с циклом дайджеста AngularJS, используйте $q.when
:
gapi.load('auth2', function() {
auth2 = gapi.auth2.init({
fetch_basic_profile: true,
scope: 'profile'
});
// Sign the user in, and then retrieve their ID.
//auth2.signIn().then(function() {
//USE $q.when to integrate with AngularJS digest cycle
$q.when(auth2.signIn()).then(function() {
var profile = auth2.currentUser.get().getBasicProfile();
//$("#welcometext").text("Welcome, " + profile.getName()); //this is my current workaround, but don't like it.
$scope.userName = profile.getName();
console.log($scope.userName); //this prints the correct name
});
}); // gapi.load
Преобразуя gapi
обещание в $q
сервисное обещание, структура AngularJS будет реагировать на изменения в $ scope по .then
методу.
Из Документов:
$ q.when
Обертывает объект, который может быть значением или (стороннее), а затем может обещать
$q
обещание. Это полезно, когда вы имеете дело с объектом, который может или не может быть обещанием, или если обещание исходит от источника, которому нельзя доверять.
- AngularJS $ q Service API Reference - $ q.when