Versprechen Sie eine Aktion zum Speichern von AngularJS-Ressourcen
Ich arbeite derzeit an einer REST + AngularJS-Anwendung.
Ich habe ein kleines Problem in Bezug auf Versprechen zur Ressourcenschonung.
Meine Fabrik:
App.factory('Course', function($resource) {
var course = $resource('/AppServer/admin/courses/:courseId', {}, {});
course.findAll = function() {
return course.query();
};
course.findById = function(id) {
return course.get({
courseId : id
});
};
course.saveCourse = function(course) {
return course.$save();
}
return course;
});
Mein Controller:
App.controller('CourseEditController', function($scope, $routeParams, $location, Course, FlashMessage) {
// load course into edit form
$scope.course = Course.findById($routeParams.courseId);
// save edited course and print flash message
$scope.saveCourse = function() {
var savedCourse = Course.saveCourse($scope.course);
savedCourse.$then(function(httpResponse) {
FlashMessage.set("Die Änderungen am Kurs <i>" + savedCourse.title + "</i> wurden erfolgreich gespeichert.");
$location.path("/kurse/verwalten");
});
}
});
Jetzt ist das Problem, dass ich die folgende Ausnahme bekomme:
TypeError: Cannot call method '$then' of undefined
Das Seltsame ist, dass, wenn ich einem der Finder (z. B. findById) denselben Then-Callback hinzufüge, alles gut funktioniert. Der Rückgabewert von "return course. $ Save ()" ist jedoch undefiniert, verglichen mit dem Rückgabewert von "return course.get ({courseId: id});" Das ist "Objekt Objekt".
Ich möchte, dass die FlashMessage eingestellt wird, wenn die Speicheraktion vollständig ausgeführt wurde und nicht davor.
Irgendwelche Ideen dazu? Die Antwort von meinem REST-Service ist korrekt. Es gibt das gespeicherte Objekt zurück.
Grüße Marc