2016-05-23 7 views
0

データベースから製品を取得してから、いくつかの操作を実行する角度コントローラがあります。コントローラには、内部に別の機能を持つ機能があります。入れ子にされた関数から受け取ったデータをコントローラに戻すにはどうしたらいいですか?私は思うことが事実上すべてを試みましたが、何も働いていないようです。コントローラのネストされた関数からデータを返す方法

search.controller('SearchResultsController', function($scope, $routeParams, $http){ 

    $scope.getAllProducts = function(){  //function 1 

    var config = { 
     method: "GET", 
     url: '/products', 
     headers: {"Content-Type": "application/json;charset=utf-8"} 
    }; 

    $http(config).then(function(response) { //function 2 
     $scope.allProducts = response.data; 
     console.log($scope.allProducts) // correctly prints products fetched from server 
    }); 

$scope.getAllProducts(); 
console.log($scope.allProducts); //prints undefined 

}; 
}; 
+0

したがって、非同期メソッドを同期して呼び出すには、できません。約束をする。 – Casey

+0

$ qを使用すると、関数を非同期で実行し、処理が完了したら値(または例外)を返すことができます。 – nutboltu

答えて

0

あなたの関数はおそらく動作しますが、非同期関数呼び出しであるため、次の行が実行される前に完了していません。このコードをリファクタリングしてサービスを使用することをお勧めしますが、現在どのようにコード構造化されているかに基づいて、コントローラの起動時に必要なものは、$ httpを呼び出す際の関数内になければなりません。

関連する問題