В настоящее время я работаю над приложением REST + AngularJS.
У меня есть небольшая проблема относительно promises в действии сохранения ресурса.
Мой Factory:
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;
});
Мой контроллер:
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");
});
}
});
Теперь проблема в том, что я получаю следующее исключение:
TypeError: Cannot call method '$then' of undefined
Странно то, что если я добавлю тот же обратный вызов к одному из поисковых устройств (например, findById), все будет хорошо. Но возвращаемое значение "return course. $Save()" undefined, по сравнению с возвращаемым значением "return course.get({courseId: id}); который является" Объектом объекта".
Я хочу установить FlashMessage, когда действие сохранения было полностью выполнено, а не раньше.
Есть идеи по этому поводу? Ответ моей службы REST верен. Он возвращает сохраненный объект.
здоровается Марк