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
相关产品推荐
相关产品推荐

