【问题标题】:Accessing row in ngTable after it was sorted排序后访问 ngTable 中的行
【发布时间】:2018-02-08 17:36:43
【问题描述】:

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

});

【问题讨论】:

    标签: angularjs ngtable


    【解决方案1】:

    您可以访问tableParams.data 中的数据。因此,要按照上面的模型进行操作,您只需要执行以下操作:

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

    【讨论】:

    • 这似乎可以很好地更新行,但在使用$scope.tableParams.data.push(row) 添加行或使用$scope.tableParams.data.splice(rowNumber, 1); 删除行时不起作用
    • 如果你想删除一行,你可以为你创建的每一行添加一个删除按钮,并在控制器上调用一个函数,传递$index作为参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多