AngularJS:如何使用 ngResource 处理成功和错误回调?

Posted

技术标签:

【中文标题】AngularJS:如何使用 ngResource 处理成功和错误回调?【英文标题】:AngularJS: How to handle success and error call backs with ngResource? 【发布时间】:2013-05-10 20:38:53 【问题描述】:

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

如何处理successerror 场景?

附:我是 javascript 新手

【问题讨论】:

尝试在delete方法调用中添加回调函数,看看是否有效。 【参考方案1】:

传入成功和失败回调函数作为参数。

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

来自您链接的文档:

HTTP GET “类”操作:Resource.action([parameters], [success], [错误]) 非 GET “类”操作:Resource.action([parameters], postData, [成功], [错误])

【讨论】:

'e'的数据类型是什么?【参考方案2】:

您可以根据您使用资源的方式(取自docs)使用以下格式向成功传递错误回调:

HTTP GET“类”操作:Resource.action([parameters], [success], [error]) 非 GET “类”操作:Resource.action([parameters], postData, [success], [error]) 非 GET 实例操作:instance.$action([parameters], [success], [error])

您的示例类似于 非获取“类”操作,看起来像这样:

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

Here 是有关失败的 GET 资源的相关问题。

【讨论】:

以上是关于AngularJS:如何使用 ngResource 处理成功和错误回调?的主要内容,如果未能解决你的问题,请参考以下文章

使用 ngResource 在 AngularJS 中设置 enctype

[AngularJS] AngularJS系列 中级篇之ngResource

AngularJS ngResource 不发送自定义标头

Angularjs ngResource 需要将文件作为字段之一

根据所选项目在 ngResource (angularjs) 中查询数据

AngularJS 错误:模块“ngResource”不可用!您要么拼错了模块名称,要么忘记加载它