angularjs

时间:2016-12-14 20:18:56

标签: angularjs angular-resource

我想使用pj方法使用angularjs中的更新函数更新我的json对象但是在使用更新方法后我得到错误:

angular.js:14324 TypeError: menuFactory.getDishes(...).update is not a function
    at b.$scope.submitComment (controllers.js:104)
    at fn (eval at compile (angular.js:15152), <anonymous>:4:159)
    at e (angular.js:26673)
    at b.$eval (angular.js:17958)
    at b.$apply (angular.js:18058)
    at HTMLFormElement.<anonymous> (angular.js:26678)
    at bg (angular.js:3613)
    at HTMLFormElement.d (angular.js:3601)

这是我的service.js代码:

.service('menuFactory', ['$resource', 'baseURL', function($resource,baseURL) {
            this.getDishes = function(){
                return $resource("localhost:3000/"+"dishes/:id",{update:{method:'PUT' }});

                                };      
    }])

这是我的控制器代码:

 .controller('DishCommentController', ['$scope', 'menuFactory', function($scope,menuFactory) {

        $scope.mycomment= {rating:"5", comment:"", author:""};

                            $scope.dish.comments.push($scope.mycomment);

            menuFactory.getDishes().update({ id:$scope.dish.id }, $scope.dish);
    }])

为什么angular无法识别更新方法,我遇到了与get方法相同的问题,但在将我的角度更新为1.6.0版本后,get方法解决了问题。但现在我对Update方法有同样的问题。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

我认为您可能错误地调用了$ resource。

Documentation并查看用法:

$resource(url, [paramDefaults], [actions], options);

您使用paramDefault参数发送操作,因此只需输入该参数的空文字,除非您要自定义它。

更改

$resource("localhost:3000/"+"dishes/:id",{update:{method:'PUT' }});

$resource("localhost:3000/"+"dishes/:id",{}, update:{method:'PUT' }});