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 № 1Eu 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" }});