在排序后访问ngTable中的行

时间:2018-02-08 17:36:43

标签: angularjs ngtable

In this plunk我有一个ngTable,有三行。我需要知道的是排序后的行号。例如,按名称升序对ngTable进行排序。您应该在名称栏中看到' aaa',' bbb'和' ccc'。然后单击按钮,我希望看到第一行更新,但最后一行是使用新值设置的。发生这种情况是因为$scope.data数组本身未排序,但ngTable在内部对副本进行排序。我需要更新第一个"可见"我怎么能实现呢?

HTML

    <table ng-table="tableParams" class="table table-bordered">
        <tbody>
            <tr ng-repeat="u in $data">
                <td title="'User ID'" sortable="'uid'" >
                    {{ u.uid }}
                </td>
                <td title="'Name'" sortable="'nm'" >
                  {{ u.nm }}
                </td>
        </tbody>
    </table>

的Javascript

var app = angular.module('app', ['ngTable']);

app.controller('myCtl', function($scope, NgTableParams) {

      $scope.data = [{
          uid: 1,
          nm: 'ccc'
      }, {
          uid: 2,
          nm: 'bbb'
      }, {
          uid: 3,
          nm: 'aaa'
      }];

      $scope.tableParams = new NgTableParams({
          count: 5
      }, {
          data: $scope.data
      });


      $scope.updateRow = function(row){
        $scope.data[row].uid = 999;
        $scope.data[row].nm = 'XXXXX';
        $scope.tableParams.reload();
      };

});

1 个答案:

答案 0 :(得分:0)

您可以访问tableParams.data中的数据。所以要做你上面的模型,你只需要做这样的事情:

  $scope.updateRow = function(){
    $scope.tableParams.data[0].uid = 999;
    $scope.tableParams.data[0].nm = 'XXXXX';
    $scope.data = $scope.tableParams.data;
  };