2016-05-16 8 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を最初に呼び出しますユーザーは「ログイン」ボタンをクリックします)、ユーザーの詳細を表示するためにレスポンスを使用しようとします。しかし、$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]; 

    });    

}

関連する問題