Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将$http get响应存储在可从$http函数(Angularjs)外部访问的变量中?_Javascript_Angularjs_Factory_Http Get - Fatal编程技术网

Javascript 如何将$http get响应存储在可从$http函数(Angularjs)外部访问的变量中?

Javascript 如何将$http get响应存储在可从$http函数(Angularjs)外部访问的变量中?,javascript,angularjs,factory,http-get,Javascript,Angularjs,Factory,Http Get,我还在学习angular和javascript,我发现了stack 溢出真的很有用。事实上,这是我第一次在其他问答中找不到解决问题的方法。我尝试了很多解决方案,但都不管用 简而言之:我想将$HTTPGET(用户数据)的响应保存在变量中,这样我就可以在这个控制器的其他函数中使用它 带有$http get函数的我的工厂: app.factory('getUserFactory', ['$http', function($http){ return { getUser

我还在学习angular和javascript,我发现了stack 溢出真的很有用。事实上,这是我第一次在其他问答中找不到解决问题的方法。我尝试了很多解决方案,但都不管用

简而言之:我想将$HTTPGET(用户数据)的响应保存在变量中,这样我就可以在这个控制器的其他函数中使用它

带有$http get函数的我的工厂:

    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)
            }                
            });
        }            
    };
}]);
我的控制器具有以下功能:

 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];                                  
        });            
 };

我假设我的问题与javascript的异步有关,但我总是先调用$HTTPGET(用户单击“登录”按钮),然后尝试使用响应显示用户详细信息。但是在
$scope.logIn()
之外,
$scope.userData
再次成为空对象。

我假设您正在onclick中调用logIn方法。请尝试以下操作:

$scope.logIn = function() {  // function runs on click

    getUserFactory.getUserData(user.email, user.password).then(function(response){

    $scope.userData = response.objects[0];  

    });            

})

我假设您正在onclick中调用login方法

$scope.logIn = function() {  // function runs on click

    getUserFactory.getUserData(user.email, user.password).then(function(response){

    $scope.userData = response.objects[0];  

    });            

})

为什么要存储该响应?能否设置一个plunkr?这将有助于更快地找到解决方案。“UserController”中是否有“consoleLog”方法?我想存储响应,以便显示响应详细信息(如用户名)在站点上,并在其他函数(如$http patch)中使用响应详细信息-这样用户就不必再次写入用户名“consoleLog()是“UserController”中的方法为什么要存储该响应?您可以设置一个plunkr吗?这将有助于更快地找到解决方案。是“consoleLog”吗“UserController”中的方法?我想存储响应,以便在站点上显示响应详细信息(如用户名),并在其他函数(如$http patch)中使用响应详细信息,这样用户就不必再次写入用户名。“consoleLog()是“UserController”中的方法