Ich habe versucht, die Facebook-Login-API in AngularJS zu verwenden. Aber ich bin nicht in der Lage, eine Variable zu aktualisieren.globale Variable in AngularJS wird nicht aktualisiert
$scope.init = function() {
$scope.name = ""
window.fbAsyncInit = function (response) {
FB.init({
appId: 'xxxxxxxxxxxxxxxxxxx',
xfbml: true,
version: 'v2.7'
});
FB.getLoginStatus(function (response) {
if (response.authResponse) {
//Calling Fb graph api if user is log in and fetching name of user
FB.api('/me', {
fields: 'name'
}, function (response) {
$scope.name = response.name;
console.log($scope.name); // 1
});
console.log($scope.name); // 2
}
});
};
console.log($scope.name); // 3
}
Die erste console.log()
zeigt die korrekten Daten in $scope.name
, das heißt nur in FB.api
. Aber die anderen zeigen nicht den aktualisierten Wert.
Erstens gibt es einen Grund, am Ende der Zeile 3 kein Semikolon zu haben? Zweitens, auf die Gefahr hin, das Offensichtliche zu überprüfen ... checken Sie in der Konsole ein, um sicherzustellen, dass der Aufruf von FB.api nicht zu einem Fehler führt? – dat
Mögliches Duplikat von [Wie gebe ich die Antwort von einem asynchronen Anruf zurück?] (Http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – JLRishe