Javascript 对ng模型使用$index

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

我正在建立一个SPA,在这里,您可以单击按钮添加一个表格行:

<!-- 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>