Angular js reload() 中的 ng-table 不更新表数据



我无法使用 reload(( 获取 ng 表来刷新其视图/数据。下面是一个示例 plunker,但表格显示正确,但是当我更新 $scope.data 并调用重新加载时,即使页面上显示的数组更新,表也不会更新。我已经在 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);
});

网页代码

<!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

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

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

最新更新