AngularJS $ resource.delete()返回什么?

时间:2018-04-19 18:57:01

标签: angularjs rest es6-promise angular-resource

我正在使用AngularJS $resource来列出,创建和更新资源,它运行正常。例如:

getFoo = (fooId) => {
  const Foo = $resource("api/foos/:fooId);
  return Foo.get({fooId});
};

这将返回Foo个实例,其中Foo.$promise我可以用来查看请求何时完成。

但如果我想删除Foo怎么办?

deleteFoo = (fooId) => {
  const Foo = $resource("api/foos/:fooId);
  return Foo.delete({fooId});
};

我能找到的所有例子都显示Foo.delete({fooId}),但从不告诉它返回什么。如何才能知道删除成功的承诺?

Foo.delete({fooId}) Foo $ {}返回Foo.$promise $资源get(),就像$promise一样?但是,拥有我刚刚删除的东西的资源会很奇怪。它会返回$http本身吗?它是否返回基础Foo.delete({fooId})对象?

简而言之,我怎样才能从{{1}}获得承诺,知道删除何时成功?

1 个答案:

答案 0 :(得分:0)

来自documentation

  

类对象或实例对象上的操作方法可以是   使用以下参数调用:

"class" actions without a body: Resource.action([parameters], [success], [error])
"class" actions with a body: Resource.action([parameters], postData, [success], [error])
instance actions: instance.$action([parameters], [success], [error])

删除操作是没有正文的操作,因此如果您想要验证删除是否成功,那么您需要通过操作发送成功和错误。

以下是使用实体ID的示例:

 var entityResource = $resource('/api/:entityType/:entityId', 
                                   {type:'@entityType', id: '@entityId'});

    entityResource.delete({type: $scope.entityType, id: entityId}, success, failed);

您的成功或失败将如下所示:

var success = function (result) {
    $scope.remove($scope.table.data, idColumn, entityId);
};

var failed = function (result) {
    alert("You action has failed with: " + result);