Ich habe eine einfache App mit Spring und AngularJS mit CRUD-Funktionen erstellt.AngularJS - Spring MVC Rest: Nicht aktualisieren Objekt nach POST
Jetzt, meine Scope-Variable, die die Arraylist enthält, die ich passiere, wird nicht aktualisiert, wenn ich ein neues erstelle.
Dies ist mein Code für mein AngularJS Controller
$scope.agency = {id: null, name: '', contact: '', employees: []};
$scope.agencies = [];
$scope.getAllAgencies = function() {
AgencyService.getAllAgencies()
.then(
function (response) {
$scope.agencies = response;
}
)
};
$scope.getAllAgencies();
$scope.createAgency = function(agency) {
AgencyService.createAgency(agency)
.then(
$scope.getAllAgencies(),
function(errReponse){
console.error('Error while creating Agency.');
}
);
};
$scope.submit = function() {
console.log("Saving new Agency");
$scope.createAgency($scope.agency);
$scope.reset();
};
$scope.reset = function(){
$scope.agency = {id: null, name: '', contact: '', employees: null};
$scope.myForm.$setPristine(); //reset Form
};
Dienst
App.factory('AgencyService', ['$http', '$q', function($http, $q) {
return {
getAllAgencies: function() {
return $http.get('/agency')
.then(
function(response) {
return response.data;
},
function(errResponse){
console.error('Error while fetching agencies');
return $q.reject(errResponse);
}
)
},
createAgency: function(agency) {
console.log("Creating Agency");
return $http.post('/agency', agency)
.then(
function (response) {
return response.data;
},
function (errResponse) {
console.error('Error while create agency');
return $q.reject(errResponse);
}
)
}
};
}]);
Und das sind meine Methoden im Frühjahr
Get Agenturen
@RequestMapping(value = "/agency", method = RequestMethod.GET)
public ResponseEntity<List<Agency>> getAllAgencies() {
List<Agency> agencies = agencyService.getAllAgencies();
if (agencies.isEmpty()) {
return new ResponseEntity<List<Agency>>(HttpStatus.NO_CONTENT);
}
return new ResponseEntity<List<Agency>>(agencies, HttpStatus.OK);
}
Schaffung Agentur
@RequestMapping(value = "/agency", method = RequestMethod.POST)
public ResponseEntity<Void> createAgency(@RequestBody Agency agency, UriComponentsBuilder ucBuilder) {
if(agencyService.isAgencyExists(agency)) {
System.out.println("CONFLICT");
return new ResponseEntity<Void>(HttpStatus.CONFLICT);
}
agencyService.saveAgency(agency);
HttpHeaders headers = new HttpHeaders();
headers.setLocation(ucBuilder.path("/agency/{id}").buildAndExpand(agency.getId()).toUri());
return new ResponseEntity<Void>(headers, HttpStatus.CREATED);
}
Hinweis:, dass, wenn ich debuggen, nach der Post-Methode ist es nicht zu meiner get-Methode weiter.
Es gibt keinen Fehler in diesem, wenn ich es neu lade alle einschließlich der, den ich gerade erstellt habe.
Danke!
Ist es wie beim Erstellen einer neuen Agentur, dass die Liste nicht aktualisiert wird? – aksappy
Genau! Das ist mein Problem. Wenn Sie meinen Code sehen, sollte das funktionieren. – Aaron
Müssen Sie wirklich getAllAgentacies nach createAgency() aufrufen? Können Sie nach einer 200 OK-Antwort nicht einfach die gespeicherte Agentur in das vorhandene Array verschieben? – aksappy