2016-05-16 61 views
1

我仍然在学习角度和JavaScript,我发现栈 溢出真的很有帮助。其实这是我第一次找不到解决我的问题的其他问题&这里的答案。我尝试了很多解决方案,但没有任何解决方案适合我。

简而言之:我想将$ http get(用户数据)的响应保存在变量中,所以我可以在此控制器的其他函数中使用它。

我厂以$ 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];         
     });    
}; 

而且简单的点击功能我用它来测试它是否工作:

$scope.consoleLog = function() { 
     console.log($scope.userData); 
    }; 

我假设我的问题与javascript的异步连接,但我总是调用$ http get()用户点击“登录”按钮),然后尝试使用响应来显示用户详细信息。但在$scope.logIn()之外,$scope.userData又成为空对象。

+0

你为什么要存储这种回应? –

+1

你能设置一个plunkr吗?这将有助于更快地获得解决方案。 –

+0

是“UserController”中的“consoleLog”方法? – CodingNinja

回答

0

我假设你在onclick.just中调用登录方法,试试这个:;

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

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

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

    });    

};