Javascript 对ng模型使用$index
我正在建立一个SPA,在这里,您可以单击按钮添加一个表格行:Javascript 对ng模型使用$index,javascript,angularjs,html-table,Javascript,Angularjs,Html Table,我正在建立一个SPA,在这里,您可以单击按钮添加一个表格行: <!-- Table --> <table> <tr> <th>Lieferscheinnummer</th> <th>Stück</th> </tr> <tr ng-repeat="position in positions"> <td><input type="text
<!-- Table -->
<table>
<tr>
<th>Lieferscheinnummer</th>
<th>Stück</th>
</tr>
<tr ng-repeat="position in positions">
<td><input type="text"></td>
<td><input type="text"></td>
</tr>
</table>
<!-- button -->
<span ng-click="addPosition()"></span>
现在,我必须对每行的每一个
应用一个唯一的ng模型,以便将给定的输入发送到我的数据库
我搜索了一个解决方案,却被ng repeat
的$index
绊倒了。
不幸的是,$index
似乎不适用于元素属性:
<tr ng-repeat="position in positions">
<td><input type="text" ng-model="{{$index +1}}"></td> <!-- does not work -->
<td><input type="text"></td>
</tr>
在使用ng repeat
时,如何将唯一的ng模型应用于每一行?您可以更改模型。目前,您正在像计数器一样使用ng repeat
。您有一个存储元素的模型-您无论如何都不会在中使用元素,只是利用列表中元素的数量并循环多次
你可以做的是列出一系列独特的模型
考虑到您正在表中使用它,每个条目都可以有一个ID字段来唯一标识每一行
因此,您的模型将如下所示:
//Will contain the data entered in the table
$scope.tableData = [
{
id: 1,
data: ""
},
{
id: 2,
data: ""
}
];
//Will keep track of the last used ID
$scope.currentId = 2;
//Will add a record to the table each time it is called
$scope.addRecord = function () {
var newRecord = {
id: $scope.currentId++;
data: ""
};
$scope.tableData.push(newRecord);
};
在您看来,现在可以使用tableData
循环实际数据本身,而不是记录的计数:
<tr ng-repeat="entry in tableData">
<td>
<input type="text" ng-model="entry.data">
</td>
</tr>
对于另一个输入,您可以简单地向每个记录添加另一个属性ng repeat
将为每个记录创建一个作用域,因此条目。data
将始终指向位于该行的记录的data
属性
注意:对于ID,您可能必须使用另一种方法为大量记录生成唯一ID。简单地增加一个计数器并不是最好的方法
<tr ng-repeat="entry in tableData">
<td>
<input type="text" ng-model="entry.data">
</td>
</tr>