0

Ich versuche, das DOM (ng-repeat) (Aufruf einer $ http.get) auf meiner Ansicht nach einem $ http.post ist erfolgreich, aber es funktioniert nicht.

Ich habe getestet mit ng-klicken Sie auf meine $ http.get aufrufen und es aktualisiert das DOM, so dass ich verwirrt bin, was los ist.

das ist mein $ 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'); 
    } 
    }); 
}; 

Ich habe einen Test die folgende Funktion verwenden und es funktioniert außerhalb des $ http.post:

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

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

Vielen Dank im Voraus.

+0

Sagen Sie, dass ingetget() ein Versprechen zurückgibt? – Scottie

+0

Ja, ich verwende $ http.get ('/ someUrl', config) .then (successCallback, errorCallback); für meine Methode. –

+0

Ich sehe keine 'ng-Wiederholung' irgendwo in der Frage ... Bitte lesen Sie, wie man eine [mcve] erstellt. –

Antwort

1

Wenn ich es richtig bekomme, sobald Sie einige Daten senden (post), möchten Sie die Ansicht mit den verbleibenden Daten aktualisieren.
Ich glaube, Sie können versuchen:

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

in Ihrer Callback-Erfolg des POST Anruf statt schieben. anstelle von:

P.S. Ich gehe davon aus, dass Sie ng-repeat auf $ scope.response anwenden.

1

Das Problem war, weil "ng-Controller" wurde zweimal in HTML-Vorlage definiert.