AngularJS$资源删除集合中的项目
我有一个ASP.NET Web Api(1)控制器,具有获取、发布和删除操作。我在Angular 1.2.0 RC3应用程序中使用AngularJS$资源删除集合中的项目,angularjs,rest,asp.net-web-api,angularjs-resource,Angularjs,Rest,Asp.net Web Api,Angularjs Resource,我有一个ASP.NET Web Api(1)控制器,具有获取、发布和删除操作。我在Angular 1.2.0 RC3应用程序中使用$resource调用此功能。让我们调用控制器Foos 我执行一个GET,返回一个foo列表: GET http://localhost:55386/api/foos/123456/1 HTTP/1.1 Host: localhost:55386 Connection: keep-alive Accept: application/json, text/plain,
$resource
调用此功能。让我们调用控制器Foos
我执行一个GET,返回一个foo列表:
GET http://localhost:55386/api/foos/123456/1 HTTP/1.1
Host: localhost:55386
Connection: keep-alive
Accept: application/json, text/plain, */*
Origin: null
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,es;q=0.6
资源在哪里
/api/foos/clientId/recordId
这里我说的是给我一个客户x和记录y的FOO列表
现在,我想从我收到的foo列表中删除一个foo,因此我调用$delete
:
$scope.delete = function(foo){
foo.$delete();
}
但是,这会导致以下请求:
DELETE http://localhost:55386/api/foos/123456/1 HTTP/1.1
Host: localhost:55386
Connection: keep-alive
Accept: application/json, text/plain, */*
Origin: null
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,es;q=0.6
这个删除显然是试图删除整个foo列表,这很有意义
我的问题是,如何使用Angular的$resource删除单个foo,而不在其各自的GET请求中获取每个foo?
更新:
我可以做一个
GET/api/foo/1
,其中资源是foo/fooId
,它的等价物DELETE/api/foo/1
来删除它,但我想得到一个foo列表,而不是每个foo单独的。我知道这不是问题,但你应该重新定义。与rest服务交互更容易我误解了$资源
的工作原理。我假设foo
知道如何删除自己,因为它是以下函数中的资源
实例:
$scope.delete = function(foo){
foo.$delete();
}
正确的方法是:
$scope.delete = function(foo){
Api.delete({
id: foo.Id,
clientId : $scope.clientId,
recordId : $scope.recordId
});
}
您必须手动告诉$resource
实例使用foo的id,以便url包含foo id并执行以下删除操作
DELETE http://localhost:55386/api/foos/123456/1/123 HTTP/1.1
其中123是
fooId
不是clientid=123456和recordid=1?所以我有点困惑到底出了什么问题?我的问题是,对于$resource,如何使用Angular的$resource删除单个foo,而不在其各自的GET请求中获取每个foo?我已经更新了问题。@Sylvester,看看我的答案,我会查出来的。