web-dev-qa-db-ja.com

AngularJS:ngResourceで成功とエラーのコールバックを処理する方法は?

docs はそれについての考えを与えません。

REST enpointがエラーをスローする場合がある

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

上記を以下に変更しました

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

しかし失敗する

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

successおよびerrorシナリオをどのように処理できますか?

追伸JavaScriptは初めてです

22
daydreamer

リソースの使用方法に応じて、次の形式を使用して成功したエラーコールバックを渡すことができます( docs から取得):

  • HTTP GET「クラス」アクション:Resource.action([parameters]、[success]、[error])
  • 非GET「クラス」アクション:Resource.action([parameters]、postData、[success]、[error])
  • 非GETインスタンスアクション:instance。$ action([parameters]、[success]、[error])

あなたの例はnon-get "class"アクションに似ており、次のようになります。

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

ここ は、失敗したGETリソースに関する関連質問です。

33
Gloopy

成功および失敗のコールバック関数を引数として渡します。

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

リンクしたドキュメントから:

HTTP GET「クラス」アクション:Resource.action([parameters]、[success]、[error])
GET以外の「クラス」アクション:Resource.action([parameters]、postData、[success]、[error])

4
xbonez