gpt4 book ai didi

arrays - 在 AngularJs 中使用 $resource 来保存对象数组

转载 作者:行者123 更新时间:2023-12-02 06:35:28 25 4
gpt4 key购买 nike

我正在使用 $resource 通过查询从服务器检索数据。服务器返回一个对象数组,我将其存储在stuklijst 中。我可以通过循环数组并使用 $save 将数组的每个项目发送回服务器,将 stuklijst 的(更新的)内容发送回服务器。我现在想一次性将所有项目(整个 stuklijst)发送到服务器,而不使用循环。

stuklijst 上尝试 $save 时,Angular 会抛出“destination.push 不是函数”错误。如何使用 $resource 来实现这一点?

代码如下:

服务:

var stukModule = angular.module('stuklijstServices', ['ngResource'])
stukModule.factory('Stuklijsten', function($resource){
return $resource('rest/stuklijsten/:stuklijstID', {} );
});

Controller :

//Get the data from server      
$scope.stuklijst = Stuklijsten.query({stuklijstID: $routeParams.stuklijstID});

//See below for sample of data returned by server
//Users can update the data and request a save using saveStuklijst

//Send them back to server (using saveStuklijst(Stuklijst))
$scope.saveStuklijst = function(lijst) {
//sending items from stuklijst one by one :
for(var i = 0; i < lijst.length; i++)
{// console.log(i);
// console.dir(lijst[i]);
lijst[i].RowID = i
f = new Stuklijsten(lijst[i]);
f.$save({stuklijstID: $routeParams.stuklijstID});
} ;
};

服务器返回并存储在Stuklijst中的数据:

 [{"Name":"K FlxMT in DG met diameter 025 cm","LineType":0,"ProdID":"DG025KFLXMT","RowID":7,"Unit":"stk","Quantity":1},{"Name":"SPR Fl in DG met diameter 025 cm","LineType":0,"ProdID":"DG025SPRFL","RowID":8,"Unit":"stk","Quantity":1},{"Name":"T FlxFl in DG met diameter 025 cm","LineType":0,"ProdID":"DG025TFLXFL","RowID":9,"Unit":"stk","Quantity":0},{"Name":"VER PL EX in DG met diameter 025 cm","LineType":0,"ProdID":"DG025VERPLEX","RowID":10,"Unit":"stk","Quantity":0},{"Name":"K FlxMT in PV met diameter 008 cm","LineType":0,"ProdID":"PV008KFLXMT","RowID":11,"Unit":"stk","Quantity":0}] 

最佳答案

您可以通过重新定义资源的 save 函数来指定 isArray=true 来发送对象数组,如下所示:

stukModule.factory('Stuklijsten', ['$resource', function ($resource) {
return $resource(
'rest/stuklijsten/:stuklijstID',
{},
{
save: {
method: 'POST',
isArray: true
}
}
);
}]);

然后,在您的 Controller 中,您可以组合列表并将所有内容保存在一个 http 请求中(少一些繁琐的 API):

$scope.saveStuklijst = function(lijst) {
var some_list = [];
for(var i = 0; i < lijst.length; i++) {
lijst[i].RowID = i
f = new Stuklijsten(lijst[i]);
some_list.push({stuklijstID: $routeParams.stuklijstID});
};
Stuklijsten.save(some_list);

如果您希望仍然能够 POST 单个对象,您可以使用相同的概念创建一个 saveBulk 函数来保留单个对象的原始 save

关于arrays - 在 AngularJs 中使用 $resource 来保存对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20150544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com