2016-06-17 17 views
-2

これは前に尋ねたことがありますが、私はajax呼び出しを含む関数をどのように連鎖させるかを考えようとしています。私が持っているものは次の通りです:角関数の連鎖

$scope.firstFunc(); 
$scope.secondFunc(); 

secondFuncは、firstFuncから設定されたスコープ値をチェックします。どのように私はこれをチェーンできますか?

+0

約束を返して使用する必要があります。 – SLaks

+0

@slaksそれぞれのメソッドから$スコープを返すことはできますか? –

+4

「これは以前に尋ねられたことがわかっています」前の質問の答えについて何を理解していませんでしたか? –

答えて

0

たとえば次のような機能を持っている場合:

$scope.firstFunc = function() { 
    return $http 
     .get('/api/objects') 
     .then(function(data) { 
      $scope.data = data; 
     }); 
}; 

$scope.secondFunc = function() { 
    return $http 
     .get('/api/otherObjects') 
     .then(function(data) { 
      // do something with new 'data' and with $scope.data 
     }); 
}; 

あなたは、このような順序でそれらを呼び出すことができます。

$scope.firstFunc().then($scope.secondFunc); 

は私が正しく理解と仮定。

$scope.firstFunc()は、(それがその最初の.thenチェーンを終了した後に)約束$http.getが返さ返さ

そして、我々はその同じ約束のために別の.thenをチェーン、および$scope.secondFuncを実行することを告げました。

あなたはまた、単に(それはあなたのニーズに合っている場合)、以下を使用して直接最初のAJAX呼び出しの応答データを使用することができ

$scope.firstFunc = function() { 
    return $http 
     .get('/api/objects'); 
}; 

$scope.secondFunc = function(previousData) { 
    return $http 
     .get('/api/otherObjects') 
     .then(function(data) { 
      // do something with 'previousData' from the previous call from $scope.firstFunc 
     }); 
}; 

をして$scope.secondFuncはなく直接$scope.firstFunc()のデータを受信するよう$scope.firstFunc().then($scope.secondFunc)ですべてを呼び出しますそれが何とかあなたが最初に欲しかったものなら、$scopeを通過しなければなりません。そうでなければ、この答えの最初の部分は私が思うでしょう。

これが役に立った!

関連する問題