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

Antworten auf die Frage(5)

Ihre Antwort auf die Frage