Javascript 将ng重复数据保存在数组中
在我的MongoDB“我有属性”集合中,我想为每个属性添加一个新字段“odoo_name”,并保存它 例如,我有100个属性,每个属性都有一个odoo_name字段来更新旧数据库 问题:my console.log(odoo_name)显示未定义的,它看不到输入字段中填充的名称 我将ng submit函数更改为saveOdooNames(vm.localAttributes),我正在获取所有数据,但当我尝试访问ng模型时,仍然获取未定义的console.log(inputs.odoo_name) PS:如果我一个接一个地保存字段,它是有效的,但是我需要批量保存这些字段 编辑: 我将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)
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
}