Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了数组 – 使用AngularJs中的$resource来保存对象数组大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用$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',{} );
});

控制器:

//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","ProdID":"DG025SPRFL","RowID":8,{"Name":"T FlxFl in DG met diameter 025 cm","ProdID":"DG025TFLXFL","RowID":9,"Quantity":0},{"Name":"VER PL EX in DG met diameter 025 cm","ProdID":"DG025VERPLEX","RowID":10,{"Name":"K FlxMT in PV met diameter 008 cm","ProdID":"PV008KFLXMT","RowID":11,"Quantity":0}]

解决方法

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

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

然后,在您的控制器中,您可以组合列表并将所有内容保存在一个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函数以保留单个对象的原始保存.

大佬总结

以上是大佬教程为你收集整理的数组 – 使用AngularJs中的$resource来保存对象数组全部内容,希望文章能够帮你解决数组 – 使用AngularJs中的$resource来保存对象数组所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:对象