我目前正在开发一个 REST + AngularJS 应用程序。
关于资源节省行动的承诺,我有一个小问题。
我的工厂:
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)添加相同的 then-callback,一切正常。但是“return course.$save()”的返回值是未定义的,与“return course.get({courseId:id});”的返回值相比 这是“对象对象”。
我想要的是在保存操作完全执行时而不是在此之前设置 FlashMessage。
对此有什么想法吗?我的 REST 服务的响应是正确的。它返回保存的对象。
问候马克