Angularjs在当前行位置添加行

时间:2015-04-02 19:54:53

标签: javascript angularjs

我有以下代码,假设在当前行位置添加另一行(不在行的底部):

<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);
}

我尝试了上面的代码,希望将索引添加到它将添加它的当前位置,但它不起作用。如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

尝试使用.splice()代替.push()

$scope.addRo=function(index){
  var inderted={
    id: '',
    name: ''
  };
  $scope.rows.splice(index + 1, 0, inderted);
}

以下是.splice()

docs

此外,如果您只是暂时使用它,则无需向范围添加“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
    };