0

$ http.postの後に私のビューでDOM(ng-repeat)($ http.getを呼び出す)を更新しようとしています成功しましたが、うまくいきません。

ng-clickを使用してmy $ http.getを呼び出してテストしましたが、DOMを更新するので、何が起こっているのか混乱しています。

これが私の$ http.postです:

$scope.save = function(){ 
    //url, data and config here... 
    $http.post(url, data, configPost).then(function(data) { 
    if(data.status == 200){ 

     if ($scope.formData.comment) { 
     $scope.formData.comment = ''; 
     $scope.response.push(initget()); // this is where I'm calling the $http get 
     } 

    } else { 
     console.log('post error'); 
    } 
    }); 
}; 

私は次の関数を使用してテストを行なったし、それは、$ http.post外で動作します:事前に

$scope.updateDOM = function() { 
    $scope.response.push(initget()); 
}; 

<a href="#" ng-click="updateDOM()">update dom</a> 

感謝。

+0

あなたはinitget()が約束を返すと言っていますか? – Scottie

+0

はい、私は$ http.get( '/ someUrl'、config).then(successCallback、errorCallback)を使用しています。私のgetメソッドのために。 –

+0

質問のどこでも 'ng-repeat'が表示されません... [mcve]の作成方法をお読みください。 –

答えて

1

一部のデータを送信(投稿)したら、残りのデータで表示を更新することができます。
私はあなたが試すことができると思います。

$http.get('/someUrl', config).then(function(data){$scope.response = data;}) 

代わりに押しのPOST呼び出しのコールバックの成功に。すなわち、次の代わりに:

$scope.response.push(initget()); 

P.S.私はあなたが$ scope.responseにng-repeatを適用していると仮定しています。

1

問題は「ng-controller」がhtmlテンプレートで2回定義されたためです。

関連する問題