2013-07-18 2 views
1

Я построил 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) 
    }) 
    } 
} 

Закон работает, сцена выдает указанное выше сообщение об ошибке.

+2

Проще отлаживать эти вещи в плунтере. –

ответ

2

Выяснил это. AngularJS - creating a service object

Найден способ написать его, чтобы он работал, не уверен, почему он работает, но так как он работает, я счастлив.

app.factory('ScenesService', function ($resource) { 
    return $resource('/api/scenes/:actId/:id', { actId : '@actId', id:'@id' }, { 
    update: {method: 'PUT'}, 
    query: {method: 'GET', isArray: true}, 
    get: {method: 'GET'}, 
    delete: {method: 'DELETE'} 
    }) 
}); 
Смежные вопросы