ng-таблица в angular js reload () не обновляет данные таблицы - PullRequest
0 голосов
/ 18 января 2020

Я не могу получить таблицу ng для обновления sh это представление / данные с использованием reload (). Ниже приведен пример плунжера, но таблица отображается правильно, но когда я обновляю $ scope.data и вызываю reload, таблица не обновляется, хотя массив, показанный на странице, делает. Я тестировал на 0.8.3, а также на нг-столе 1.0х. Тестирование фильтрации данных работает

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="bootstrap@3.3.2" 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="angular.js@1.3.7" 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

1 Ответ

0 голосов
/ 19 января 2020

Я разобрался с разрешением. Если вы используете функцию getData, она связывается, и reload () не требуется. Не уверен, почему это работает на других страницах, но это решило проблему для меня.

$scope.tableParams = new NgTableParams({}, { 
                getData: function(){
                    return $scope.data;
                }
            });
...