angularjs删除对象数组

Posted

技术标签:

【中文标题】angularjs删除对象数组【英文标题】:angularjs DELETE array of objects 【发布时间】:2014-09-03 07:26:30 【问题描述】:

请帮助我理解:为什么 angularjs 不删除对象数组

$scope.removeAll = function(
    all = _.pluck($scope.uploader.queue, 'file');

    all.length && HTTPStorage.query_delete(all,
        function () 
            $scope.uploader.clearQueue();
            delay.resolve();
        );
)

服务:

services.factory('HTTPStorage', ['$resource', function($resource)
        return $resource('/api/v1/documents/storage/:id', 'id': '@id',
            'query_delete': 
                method: 'DELETE',
                isArray: true
            
        );
    ]);

对象数组: [

file: "storage/dave-macvicar-1130x1130.jpg",  
id: 377,  
is_external: false,  
size: 272543,  
status: "unknown",  
type: "image/jpeg",  
upload_type: 1,  
uploaded: "2014-09-03" , ...same objects, with different id, ]  

角度发送到服务器: /api/v1/documents/storage?0=%7B%22webkitRelativePath%22:%22%22,%22lastModifiedDate%22:%222014-08-19T14:11:17.000Z%22,%22name%22:%22Screenshot+来自+2014-08-19+18:11:16.png%22,%22type%22:%22image%2Fpng%22,%22size%22:607898,%22id%22:381,%22upload_type%22:1 ,%22user%22:%22%D0%A8%D0%B8%D1%80%D0%BE%D0%BA%D0%BE%D0%B2+%D0%90%D0%BB%D0%B5%D0 %BA%D1%81%D0%B5%D0%B9+%D0%A1%D0%B5%D1%80%D0%B3%D0%B5%D0%B5%D0%B2%D0%B8%D1%87 %22,%22file%22:%22storage%2F0ccf78bc333a11e48c4bb8030570fabc%2FScreenshot+from+201 .....还有更多符号

如何发送到服务器对象数组以删除这些对象 如果使用 curl 一切正常:

curl -X DELETE -H 'Content-Type: application/json' http://127.0.0.1:8000/api/v1/documents/storage -d '["id": 330, "id": 333]' -u user:pass

【问题讨论】:

您是否将ngResourse 模块与其他模块一起添加? 是的,我做到了。我用对了吗? DELETE 不允许您以与 POST 相同的方式发送数据。 使用 POST 而不是 DELETE :) 嗯...为了删除更多数据,我正在使用 POST。最简单的技巧。 【参考方案1】:

您可以通过 queryString 发送要删除的 id,就像这样:

http://localhost:3030/api/books?TENANTID=xxx&q=%5B1,3%5D

%5B 等于 [

%5D 等于 ]

所以未转换的 url 应该是这样的:

http://localhost:3030/api/books?TENANTID=xxx&q=[1,3]

在你的角度代码中,它可以这样写:

...
.factory('BookEntity', ['$resource', function ($resource) 
    return $resource(
        '/api/books/:id',
        id: '@id',
        
            create: method: 'POST',
            update: method: 'PUT'
        
    );
])

...
ScriptEntity.delete(q: JSON.stringify(bookIds)) //bookIds is an array contains of Ids you want to delete

【讨论】:

以上是关于angularjs删除对象数组的主要内容,如果未能解决你的问题,请参考以下文章

使用AngularJS方式在对象数组中通过其属性查找对象

如何在angularjs中合并两个对象数组?

AngularJS将递归JSON解析为对象数组

如何过滤剑道网格(AngularJs)中的对象数组?

AngularJS:一次在数组中显示一个特定对象

AngularJS 监视对象数组以进行数据更改