2013-07-18 64 views
1

我为我的2种数据类型Act和Scene构建了2个工厂。除了我的场景的更新功能(创建,读取,删除工作正常),一切都可以完美运行。对于我的生活,我不能找出幕后更新功能无法正常工作,我刚刚得到这个消息:角度资源更新不起作用

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) 
    }) 
    } 
} 

Act works,Scene会引发前面提到的错误信息。

+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'} 
    }) 
});