Я построил 2 фабрики для моих двух типов данных Act и Scene. Все работает отлично, за исключением функции обновления Scene (создание, чтение, удаление). Для жизни меня я не могу понять, что функция Сцены-обновление не работает, я просто получаю сообщение:Обновление углового ресурса не работает
TypeError: Object function Resource(value){
copy(value || {}, this);
} has no method 'update'
at Object.ScenesUpdateCtrl.$scope.save
у меня есть 2 фабрики:
app.factory('ActsService', function($resource) {
return $resource('/api/acts/:id', {id: '@id'}, {update: {method: 'PUT'}});
});
app.factory('ScenesService', function($resource) {
$resource('/api/scenes/:id', {id: '@id'}, {update: {method: 'PUT'}});
$resource('/api/scenes/:actId', {actId: '@id'}, {query: {method: 'GET', isArray: true}});
$resource('/api/scenes/:actId/:id', {actId: '@actId', id: '@id'}, {get: {method: 'GET'}});
return $resource('/api/scenes/:actId/:id', {actId: '@actId', id: '@id'}, {delete: {method: 'DELETE'}});
});
и некоторые контроллеры обрабатывать все операции обновления.
function ActsUpdateCtrl ($scope, $location, $routeParams, ActsService) {
var id = $routeParams.id
$scope.act = ActsService.get({id: id})
$scope.action = "Update"
$scope.save = function() {
ActsService.update({id: id}, $scope.act, function() {
$location.path('/admin/acts')
})
}
}
function ScenesUpdateCtrl ($scope, $location, $routeParams, ScenesService) {
var id = $routeParams.id
var actId = $routeParams.actId
ScenesService.get({actId: actId, id: id}, function(resp){
$scope.scene = resp
$scope.actId = resp.PartitionKey
$scope.prev = resp.prev.split(",")
})
$scope.scenes = ScenesService.query({actId: actId})
$scope.action = "Update"
$scope.save = function() {
$scope.scene.prev = $scope.prev
ScenesService.update({id: id}, $scope.scene, function() {
$location.path('/admin/acts/' + $scope.actId)
})
}
}
Закон работает, сцена выдает указанное выше сообщение об ошибке.
Проще отлаживать эти вещи в плунтере. –