You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AngularJS问题:如何将ng-repeat表格的多行文本框数据存入数组

解决AngularJS ng-repeat表格多行输入数据无法全部存入数组的问题

问题的核心原因是你当前的所有输入框都绑定了全局作用域变量(比如tableinteracayear),不管ng-repeat生成多少行,这些输入框都会共享同一个变量,最终只能获取到单一的值,无法区分每一行的输入数据。

解决方案步骤:

1. 修改HTML输入框的ng-model,绑定到循环项的属性

把每个输入框的ng-model从全局变量改为当前循环项p的对应属性,这样每一行的输入数据会和ipeedata数组的对应元素关联:

<tbody> 
<tr data-ng-repeat="p in ipeedata"> 
<td>{{p.edu_dur}}</td> 
<td> 
<input class="form-control" type="text" data-ng-model="p.academicyear" maxlength="7" style="text-transform: uppercase" /></td> 
<td> 
<input class="form-control" type="text" data-ng-model="p.rollno" maxlength="10" style="text-transform: uppercase" /></td> 
<td> 
<input class="form-control" type="text" data-ng-model="p.institutename" maxlength="75" style="text-transform: uppercase" /></td> 
<td> 
<input class="form-control" type="text" data-ng-model="p.markssecured" maxlength="75" style="text-transform: uppercase" /></td> 
</tr> 
</tbody>

2. 遍历ipeedata数组,将所有行数据存入interarr

不再单独读取全局变量,而是遍历整个ipeedata数组,把每一行的属性提取出来推入interarr:

// 先清空数组(如果需要重置的话)
scope.interarr = [];
// 遍历每一行的绑定数据
scope.ipeedata.forEach(function(rowItem) {
    scope.interarr.push({
        duration: rowItem.edu_dur,
        academicyear: rowItem.academicyear,
        rollno: rowItem.rollno,
        institutename: rowItem.institutename,
        markssecured: rowItem.markssecured
    });
});

补充说明:

如果你的ipeedata初始元素没有academicyear、rollno这些属性,AngularJS会自动为每个元素创建这些属性并绑定输入值,不需要额外初始化。这样修改后,每一行的输入都会独立存储,遍历数组就能获取所有行的完整数据了。

内容的提问来源于stack exchange,提问作者Gowtham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:37:57