Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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
Javascript 将ng重复数据保存在数组中_Javascript_Angularjs_Arrays_Angularjs Ng Repeat - Fatal编程技术网

Javascript 将ng重复数据保存在数组中

Javascript 将ng重复数据保存在数组中,javascript,angularjs,arrays,angularjs-ng-repeat,Javascript,Angularjs,Arrays,Angularjs Ng Repeat,在我的MongoDB“我有属性”集合中,我想为每个属性添加一个新字段“odoo_name”,并保存它 例如,我有100个属性,每个属性都有一个odoo_name字段来更新旧数据库 问题:my console.log(odoo_name)显示未定义的,它看不到输入字段中填充的名称 我将ng submit函数更改为saveOdooNames(vm.localAttributes),我正在获取所有数据,但当我尝试访问ng模型时,仍然获取未定义的console.log(inputs.odoo_name)

在我的MongoDB“我有属性”集合中,我想为每个属性添加一个新字段“odoo_name”,并保存它

例如,我有100个属性,每个属性都有一个odoo_name字段来更新旧数据库

问题:my console.log(odoo_name)显示未定义的,它看不到输入字段中填充的名称

我将ng submit函数更改为saveOdooNames(vm.localAttributes),我正在获取所有数据,但当我尝试访问ng模型时,仍然获取未定义的console.log(inputs.odoo_name)

PS:如果我一个接一个地保存字段,它是有效的,但是我需要批量保存这些字段

编辑:

我将
ng submit=“saveOdooNames(I)”更新为
ng submit=vm.localAttributes)”

结束编辑


保存按钮应该将所有输入数据存储在一个数组中(输入)

您应该将保存函数链接到该按钮,而不是使用i作为参数,因为ng repeat嵌套在div的下方,因此未定义i,请使用vm.localAttributes,这样您的函数中将包含数据

<form>
    <button ng-click="saveOdooNames(vm.localAttributes)">Save</button>
....

拯救
....

$http方法应该在使用的地方返回,这是一个承诺。此外,您得到
o
,然后将其放入数组中,然后在不引用数组索引的情况下执行某种对象赋值。添加return语句后,可能仍然需要重构在数据参数中分配的数据。希望帮助你,让你朝正确的方向前进

函数进程名称请求(输入){
返回$http({
方法:“POST”,
格式:“json”,
url:“/api/odoonames”,
标题:{
“内容类型”:“应用程序/json”
},
数据:{
_id:输入。\u id,
odoo_名称:inputs.odoo_名称
}
}).然后(功能(成功){
log('Success'+JSON.stringify(Success));
},函数(错误){
console.error(“error”+JSON.stringify(error));
});
}
$scope.saveOdooNames=函数(o){
//如果这里不需要数组
//我会按照请求中的方式发送“o”
var输入=[];
输入。推(o);
返回进程名称请求(输入)
};
/*重构:我也将考虑将所有HTTP请求放入工厂或服务内。*
函数processNamesRequest(输入){
返回$http({
方法:“POST”,
格式:“json”,
url:“/api/odoonames”,
标题:{
“内容类型”:“应用程序/json”
},
数据:{
_id:输入。\u id,
odoo_名称:input.odoo_名称
}
})
.然后(功能(成功){
log('Success'+JSON.stringify(Success));
})
.catch(函数(错误){
console.error(“error”+JSON.stringify(error));
});
}
$scope.saveOdooNames=函数(o){
返回进程名称请求(o)
};

事实上,我没有得到一个对象数组,我试图将该数组保存到输入数组中。在我调用该数组时,没有指定索引,这通常是“未定义”的 以下是我需要的:

解决方案1:

 $scope.saveOdooNames = function(o) {                    
            var data = [];
            for (var i = 0; i<o.length; i++) {                
                data.push({_id: o[i]._id,odoo_name: o[i].odoo_name});                
            }
            console.log(data);
            // $http post code 
          };  
$scope.saveOdooNames=函数(o){
var数据=[];

对于(var i=0;i)您希望保存所有属性,那么您将获得所有属性,而不是将“i”传递给函数pass(vm.localAttributes)attributes@KumailHussain是的,我试过了,但是当我想提取name和id时,它会显示unfinedconsole整个数据并查看您得到了什么,例如$scope.saveOdooNames=function(o){cosnole.log(o)..您的html是否显示了全部数据?@KumailHussain是的,我的html显示了所有数据,但当我获取数据时,仍然无法提取id和名称并将“null”发送到nodejsp请链接您的问题,因为该代码对我来说工作正常。当我尝试console.log(inputs.\u id,inputs.odoo\u name)它显示undefined和iam向服务器(nodejs)发送null。当然,它是未定义的,它只为输入数组中的每个子级定义,因为“o“是一个数组,我试图在没有定义索引的情况下调用_id或odoo_name谢谢你路过谢谢你的时间,是的你是对的关于索引,实际上我解决了这个问题我缺少的是“o”是一个数组,我试图将它保存到数组中,而不是指定它的索引,我只是看不到这个
<form>
    <button ng-click="saveOdooNames(vm.localAttributes)">Save</button>
....
 $scope.saveOdooNames = function(o) {                    
            var data = [];
            for (var i = 0; i<o.length; i++) {                
                data.push({_id: o[i]._id,odoo_name: o[i].odoo_name});                
            }
            console.log(data);
            // $http post code 
          };  
$scope.saveOdooNames = function () {          

            var o = _.filter(vm.localAttributes, function (x) {
              return x.odoo_name;
            });
            var data = [];
            for (var i = 0; i<o.length; i++) {                
                data.push({_id: o[i]._id,odoo_name: o[i].odoo_name});                
            }
            console.log(data);
            // $http post code
}