Promessa na ação de salvamento de recursos do AngularJS
Atualmente estou trabalhando em um aplicativo REST + AngularJS.
Eu tenho um pequeno problema em relação a promessas sobre a ação de economizar recursos.
Minha 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;
});
Meu 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");
});
}
});
Agora o problema é que recebo a seguinte exceção:
TypeError: Cannot call method '$then' of undefined
O estranho é que, se eu adicionar o mesmo callback a um dos buscadores (por exemplo, findById), tudo funciona bem. Mas o valor de retorno de "return course. $ Save ()" é indefinido, comparado ao valor de retorno de "return course.get ({courseId: id});" que é "objeto Objeto".
O que eu quero é definir o FlashMessage quando a ação de salvar foi totalmente executada e não antes disso.
Alguma idéia sobre isso? A resposta do meu serviço REST está correta. Ele retorna o objeto salvo.
Cumprimenta Marc