angular js reload()中的ng表未更新表数据

问题描述 投票:0回答:1

我无法使用reload()获取ng表来刷新其视图/数据。下面是一个示例代码,但是表可以正确显示,但是当我更新$ scope.data并调用reload时,即使页面上显示的数组执行了,表也不会更新。我已经在0.8.3和ng-table 1.0x上进行了测试。测试过滤数据的工作原理

var app = angular.module('ngTableApp', ['ngTable'])
    .controller('selectFilterController', function($scope, $filter, $q, NgTableParams) {
      $scope.data = [{name: "Moroni", age: 50},
                  {name: "Tiancum", age: 43},
                  {name: "Jacob", age: 27},
                  {name: "Nephi", age: 29}
              ];

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

      //update data array
      $scope.data = [{name: "Moroni", age: 50},
                      {name: "Tiancum", age: 43}];

      //reload table
      $scope.tableParams.reload();

      //set watch for filter  
      $scope.$watch('tableSearch', function(newTerm, oldTerm) {
                $scope.tableParams.filter({ $: newTerm });
                $scope.tableParams.reload();
            }, true);
});

html代码

<!DOCTYPE html>
<html>
  <head>
    <link data-require="[email protected]" data-semver="3.3.2" rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" />
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ng-table/0.8.3/ng-table.min.css" />
    <link rel="stylesheet" href="style.css" />

    <script data-require="[email protected]" data-semver="1.3.7" src="https://code.angularjs.org/1.3.7/angular.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/ng-table/0.8.3/ng-table.min.js"></script>
    <script src="script.js"></script>
  </head>

  <body ng-app="ngTableApp">
    <div ng-controller="selectFilterController">

      <input type="text" ng-model="tableSearch" />

      <table ng-table="tableParams" class="table" >
        <tbody>
          <tr ng-repeat="row in $data">
            <td data-title="'Name'" sortable="'name'">{{ row.name }}</td>
            <td data-title="'Age'" sortable="'age'">{{ row.age }}</td>
          </tr>
        </tbody>
      </table>

      {{data}}
    </div>

  </body>
</html>

https://plnkr.co/edit/TjyjJh4rf2fg2N18NUQc?p=preview

angularjs ngtable
1个回答
0
投票

我想出了一个解决方案。如果使用getData函数,则它似乎已绑定,不需要reload()。不知道为什么在其他页面上也能用,但这为我解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.