web-dev-qa-db-fra.com

AngularJS: Comment gérer les rappels de réussite et d'erreur avec ngResource?

Le docs ne donne aucune idée à ce sujet.

Mon REST enpoint peut générer une erreur

$scope.delete = function(index) {
    Transaction.delete({transactionId: $scope.transactions[index].uuid})     
  };

J'ai changé ce qui précède en suivant

$scope.delete = function(index) {
    Transaction.delete({transactionId: $scope.transactions[index].uuid})
      .success('transaction deleted');
  };

Mais ça échoue

TypeError: Object #<Resource> has no method 'success'
    at Object.TransactionController.$scope.delete (http://localhost:5000/static/app/js/controllers/transactionController.js:26:8)
    at http://localhost:5000/static/app/lib/angular/angular.js:6094:36

Comment gérer les scénarios success et error?

P.S. Je suis nouveau sur JavaScript

22
daydreamer

Vous pouvez transmettre avec succès un rappel d'erreur en utilisant les formats suivants en fonction de la façon dont vous utilisez la ressource (extrait de docs ):

  • Actions HTTP "GET" de classe: Resource.action ([paramètres], [succès], [erreur])
  • actions "classe" non GET: Resource.action ([paramètres], postData, [succès], [erreur])
  • actions d'instance non GET: instance. $ action ([paramètres], [succès], [erreur])

Votre exemple est similaire aux actions non-get "class" et ressemblerait à ceci:

Transaction.delete({transactionId: $scope.transactions[index].uuid}, 
    function(successResult) {
        // do something on success
    }, function(errorResult) {
        // do something on error
        if(errorResult.status === 404) {            
        }
    }

Ici est une question connexe concernant une ressource GET en échec.

33
Gloopy

Passez les fonctions de rappel de réussite et d'échec comme arguments.

Transaction.delete({transactionId: $scope.transactions[index].uuid}, 
                   function(data) {
                      // success
                   }, function(e) {
                      // failure
                   });

À partir des documents que vous avez liés:

Actions HTTP "GET" de classe: Resource.action ([paramètres], [succès], [erreur])
actions "classe" non GET: Resource.action ([paramètres], postData, [succès], [erreur])

4
xbonez