Ich lerne immer noch eckig und Javascript und ich finde Stapel Überlauf wirklich hilfreich. Eigentlich ist das erste Mal, dass ich keine Lösung für mein Problem in anderen Fragen finden konnte & Antworten hier. Ich habe viele Lösungen ausprobiert, aber nichts funktioniert für mich.
Kurz gesagt: Ich möchte Antwort von $ http Get (Benutzerdaten) in Variable speichern, damit ich es in anderen Funktionen in diesem Controller verwenden konnte.
Meine Fabrik mit $ http get-Funktion:
app.factory('getUserFactory', ['$http', function($http){
return {
getUserData : function(email, password) {
return $http.get('https://xxxxxxx.xxx.xx/api/v1/user/', {
headers: {
"Authorization": 'Basic '+ window.btoa(email +':'+password)
}
});
}
};
}]);
Mein Controller mit Funktionen:
app.controller('UserController', ['$scope','$http', 'getUserFactory', function($scope, $http, getUserFactory) {
var user= {}; //Used to bind input fields from html file
$scope.user= user;
$scope.userData = {}; // <-- HERE I WANT TO STORE RESPONSE
$scope.logIn = function() { // function runs on click
getUserFactory.getUserData(user.email, user.password).success(function(response){
$scope.userData = response.objects[0];
});
};
Und einfach auf Klick-Funktion I zu testen, ob es funktioniert:
$scope.consoleLog = function() {
console.log($scope.userData);
};
Ich nehme an, mein Problem ist mit Asynchronität von Javascript verbunden, aber ich rufe immer $ http get zuerst (Der Benutzer klickt auf "Anmelden" und dann versuche ich die Antwort zu verwenden, um die Benutzerdetails anzuzeigen. Aber außerhalb $scope.logIn()
, $scope.userData
wird wieder ein leeres Objekt.
Warum möchten Sie diese Antwort speichern? –
Konnten Sie einen Plunkr gründen? Dieses hilft, zu einer Lösung viel schneller zu gelangen. –
ist "ConsoleLog" -Methode in der "UserController"? – CodingNinja