无法读取未定义的ngResource

时间:2015-10-21 05:03:11

标签: javascript angularjs angular-resource

我的服务器上有一个工作api,我的CRUD模块工作正常,我可以在我的服务器中获取,发布,放置,删除

我的角度控制器中也有CRUD模块,除了删除功能

外,一切正常

我正在使用ngResource $ save,$ update, $ remove 来操作客户端中的数据一直到服务器

$ save和$ update工作正常,但$ remove返回错误:“无法读取属性$ remove of undefined”

这是我的控制器

$scope.findOne = function () {
    $scope.post = Posts.get({
        postId: $routeParams.postId
    });
};

$scope.update = function () {
    $scope.post.$update(function () {
        $location.path('posts/' + $scope.post._id);
    }, function (errorResponse) {
        $scope.error = errorResponse.data.message;
    });
};

$scope.delete = function (post) {
    if (post) {
        post.$remove(function () {
            for (var i in $scope.posts) {
                if ($scope.posts[i] === post) {
                    $scope.posts.splice(i, 1);
                }
            }
        });
    }
    else {
        $scope.posts.$remove(function () {
            $location.path('posts');
        });
    }
};

我的服务

angular.module('posts').factory('Posts', ['$resource',
    function ($resource) {
        return $resource('posts/:postId', {
            postId: '@_id' 
        }, {
            update: {
                method: 'PUT'
            }
        });
    }
]);

奇怪的是,更新有效,但删除不起作用

是否因为我在删除方法中的参数?

这是我的观点

<div data-ng-controller="PostsCtrl">
<section data-ng-init="findOne()">
    <div data-ng-show="authentication.user._id === post.author._id">
        <a href="/#!/posts/{{post._id}}/edit">Edit</a>
        <a href="#" data-ng-click="delete()">delete</a>
    </div>
</section>
</div>

为什么我无法删除帖子并返回undefined? 在ngResource中是否不再使用$ remove?

ngResource中可用的方法是什么?

1 个答案:

答案 0 :(得分:2)

使用Posts.remove$scope.post.$remove喜欢

$scope.post.$remove(successCallBack,errorCallBack) //careful the item ($scope.post) will be removed.

Posts.remove({},{postId: 'your post id'})

$scope.delete方法的参数不包含$resource的引用