Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS$资源删除集合中的项目_Angularjs_Rest_Asp.net Web Api_Angularjs Resource - Fatal编程技术网

AngularJS$资源删除集合中的项目

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,

我有一个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, */*
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,看看我的答案,我会查出来的。