2016-11-01 20 views
0
$scope.savekbentry = function (value) { 
     console.log('save clicked'); 
     console.log(value); 
     console.log($scope.kbentry.kbname); 

     $scope.kbentry.mode = value; 
     var kbname = $scope.kbentry.kbname; 
     var kbdescription = $scope.kbentry.kbname; 
     var kbmode = ""; 
     var type = ""; 
     if ($scope.kbentry.mode == 'symptom') { kbmode = 1; type = 'SYM' } 
     if ($scope.kbentry.mode == 'allergy') { kbmode = 3; type = 'ALG' } 

     $http.post('../AjaxRequestData.aspx/AddKBEntry', { KB_Name: kbname, KB_Des: kbdescription, KB_Mode: kbmode }) 
     .success(function (data, status, headers, config) { 

      $scope.transport = { 
       method: 'post', 
       read: '../WM_Autocomplete/GetAutocompleteData.aspx/GetSingletonLst', 
       params: { type: type } 
      } 
     }) 
     .error(function (data, status, headers, config) { 

     }); 

     clear(); 
    } 

上記のコードでは、最初の投稿の成功後に別の非同期ポストメソッドを呼び出すことにしました。現在、上記のコードでは動作しません。どのようにコールバック関数でこれを処理するには?角度jで複数の非同期ポストメソッドを処理するにはどうすればよいですか?

+2

上記のコードの2番目のポストはどこですか? – thangcao

+0

最初の投稿の成功後に確認してください – Pradees

+0

$ scope.transpost – Pradees

答えて

1

あなたがチェーンにthen()を使用して$http要求約束、例えばを解決することができます

var getSingletonPromise = function(type){ 
    return $http.post('.../GetSingletonLst', type) // returns a promise 
}; 

var addEntryPromise = function(params){ 
    return $http.post('.../AddKBEntry', params) // returns a promise 
}; 

$scope.savekbentry = function (value) { 

    addEntryPromise().then(function(){ // use then() to resolve your promise 
    // addEntry onSuccess 
    }).getSingletonPromise().then(function(){ 
     // addEntry onSuccess 
    }); 
} 

あなたはまた、別々の工場/サービスへの$ httpリクエストをseperating、エラーhandelingを追加することを検討することがあります。
上記のコードはテストされていませんが、解決策の概要を示しています。

関連する問題