/ / Problemas com o método de atualização no angularjs - angularjs, angular-resource

Problemas com o método de atualização em angularjs - angularjs, recurso angular

Quero atualizar meu objeto json com o método PUT usando a função update em angularjs, mas depois de usar o método update, recebo o erro de:

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)

Este é o meu código service.js:

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

};
}])

e este é o meu código de controlador:

 .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);
}])

por que angular não reconhece o método de atualização,Eu tive os mesmos problemas com o método get, mas depois de atualizar meu angular para a versão 1.6.0, o problema com o método get foi resolvido. mas agora eu tenho o mesmo problema com o método Update.

O que estou fazendo errado aqui?

Respostas:

0 para resposta № 1

Eu acho que você pode estar chamando $ resource incorretamente.

Documentação e veja o uso:

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

Você estava enviando ações como parâmetros paramDefault; portanto, basta inserir um literal vazio para esse parâmetro, a menos que você queira personalizá-lo.

mudança

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

para

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