Promise on AngularJS resource save action
Actualmente estoy trabajando en una aplicación REST + AngularJS.
Tengo un pequeño problema con respecto a las promesas en la acción de ahorro de recursos.
Mi Fábrica:
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;
});
Mi controlador:
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");
});
}
});
Ahora el problema es que obtengo la siguiente excepción:
TypeError: Cannot call method '$then' of undefined
Lo extraño es que si agrego la misma devolución de llamada a uno de los buscadores (por ejemplo, findById), todo funciona bien. Pero el valor de retorno de "return course. $ Save ()" no está definido, comparado con el valor de retorno de "return course.get ({courseId: id});" que es "objeto objeto".
Lo que quiero es configurar FlashMessage cuando la acción de guardar se haya ejecutado por completo y no antes.
¿Alguna idea sobre esto? La respuesta de mi servicio REST es correcta. Devuelve el objeto guardado.
Saluda a Marc