Действие $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);
});
});
}