Действие $resource delete, вызываемое для экземпляра throws undefined, не является исключением функции

Я новичок в AngularJs, я пытаюсь понять, $resource оказание услуг.

призвание delete действие на объекте экземпляра ресурса, как это:

$scope.deleteTask = function(task) {
    task.$delete(function(tasks) {
        $scope.tasks = tasks;
    }, function() {

    });
};

Выкидывает это исключение:

TypeError: undefined is not a function
    at http://localhost:3030/libs/angular-resource/angular-resource.js:557:27
    at forEach (http://localhost:3030/libs/angular/angular.js:325:18)
    at $http.then.value.$resolved (http://localhost:3030/libs/angular-resource/angular-resource.js:555:17)
    at wrappedCallback (http://localhost:3030/libs/angular/angular.js:11573:81)
    at wrappedCallback (http://localhost:3030/libs/angular/angular.js:11573:81)
    at http://localhost:3030/libs/angular/angular.js:11659:26
    at Scope.$eval (http://localhost:3030/libs/angular/angular.js:12702:28)
    at Scope.$digest (http://localhost:3030/libs/angular/angular.js:12514:31)
    at Scope.$apply (http://localhost:3030/libs/angular/angular.js:12806:24)
    at done (http://localhost:3030/libs/angular/angular.js:8379:45) 

Зная, что у меня есть фабрика, определенная как:

(function() {
    var Task = function($resource, RestUrls) {
        return $resource(RestUrls.one, {}, {
            "save": { 
                method: "POST", 
                isArray: true 
            },
            "put": {
                method: "PUT",
                url: RestUrls.put,
                params: { id: "@_id" },
                isArray: true
            },
            "delete": {
                url: RestUrls.delete,
                params: { id: "@_id" },
                method: "DELETE",
                isArray: true
            }
        });
    };

    angular.module("TaskApp").factory("Task", ["$resource", "RestUrls", Task]);
})();

При вызове его на ресурсе класс работает нормально:

$scope.deleteTask = function(task) {
    Task.delete({ id: task._id }, function(tasks) {
        $scope.tasks = tasks;
    }, function() {

    });
};

Наконец вот HTML, который вызывает deleteTask(task):

<ul>
    <li ng-repeat="task in tasks">
        <span>{{ task.content }}</span>
        <a href="#/{{ task._id }}">Edit</a>
        <button ng-click="deleteTask(task)">Delete</button>
    </li>
</ul>

Вот код на стороне сервера для действия удаления (в node.js):

deleteTask: function(req, res, next) {
    Task.remove({ _id: req.params.id }, function(err, affected) {
        if(err) return next(err);
        Task.find({}, function(err, tasks) {
            if(err) return next(err);
            res.json(tasks);
        });
    });
}

0 ответов

Другие вопросы по тегам