我有以下代码,假设在当前行位置添加另一行(不在行的底部):
<tr ng-repeat="ro in rows">
<td>{{ro.name}}</td>
<td>{{ro.id}}</td>
<td><a ng-click="addRo($index)">add row</a></td>
</tr>
在我的控制器中,我有:
$scope.addRo=function(index){
$scope.inderted={
id: '',
name: ''
};
$scope.rows($index+1).push($scope.inserted);
}
我尝试了上面的代码,希望将索引添加到它将添加它的当前位置,但它不起作用。如何解决这个问题?
答案 0 :(得分:1)
尝试使用.splice()
代替.push()
$scope.addRo=function(index){
var inderted={
id: '',
name: ''
};
$scope.rows.splice(index + 1, 0, inderted);
}
以下是.splice()
此外,如果您只是暂时使用它,则无需向范围添加“inderted”。
答案 1 :(得分:0)
要在数组中插入新元素,您需要使用Array.prototype.splice
方法。在你的情况下:
$scope.rows.splice($index+1, 0, $scope.inserted);
答案 2 :(得分:0)
由于您可以访问ng-repeat中当前元素的$index
,因此插入新行很容易。您当前代码的问题是array.push
始终将元素添加到数组的 end 。
使用array.splice
将元素实际插入数组中。
$scope.addRo = function(index) {
var newObj = {
id: '',
name: ''
};
$scope.rows.splice(index + 1, 0, newObj); //inserts a row after this one
//use index for a new row here
};