我需要能够刷新ng-table中的数据。以下图像包含完整的用例场景。 当用户点击搜索BrandID时,会出现一个新的模态窗口:
它包含一个ng表,其中包含一些加载的数据。解除模态后,单击第二个搜索(GroupID),此处打开带有ng-table的相同模态窗口,但即使请求正常并且从服务器返回数据,加载也会失败:
我希望能够刷新表格,以便使用新接收的数据对其进行初始化。
每次模态切换时都会调用Plunker中的脚本。
答案 0 :(得分:10)
尝试此更新表格数据:
$scope.tableParams.reload();
编辑: 我在你的代码中发现了一个可能的错误...... 我想你应该改变这个:
var orderedData = params.sorting() ?
$filter('orderBy')(filteredData, params.orderBy()) :
$scope.datay;
到此:
var orderedData = params.sorting() ?
$filter('orderBy')(filteredData, params.orderBy()) :
filteredData;
那会更好吗?
答案 1 :(得分:1)
可以找到问题的解决方案here。这不是一个好的解决方案,但现在它是最好的。通过强制每个请求的不同计数,表将重新加载它的数据,您将获得所需的结果。可以找到新的Plunk here 请注意每个请求每页的计数不同的重要性。如果count属性设置为相同的数字,则解决方案将失败。 我希望这说清楚,我也希望ng-table的开发人员能解决这个问题
答案 2 :(得分:1)
此代码示例似乎有效,请查看此SO问题以获取更多说明: ng-table not working for dynamic data
// Get data from factory
var data = dataFactory.query();
//Use promise to load data to table, note the replacing of the second tableParams
//object parameter with a function
data.$promise.then(function (data){
$scope.tableParams = new ngTableParams({
page: 1, // show first page
count: 10,
sorting: {
name: 'asc'
},
filter: {
name: undefined
}
}, resetTableParams()
);
});
//The function that replaces the tableParams param
var resetTableParams = function(){
return {
total: data.length,
getData: function($defer, params) {
var filteredData = params.filter() ? $filter('filter')(data, params.filter()) : data;
var orderedData = params.sorting() ? $filter('orderBy')(data, params.orderBy()) : filteredData;
params.total(orderedData.length);
$defer.resolve($scope.data = orderedData.slice((params.page() -1) * params.count(), params.page() * params.count()));
}
}
}
//A method to update the table that can be called when closing a modal
var updateTable = function(){
data = dataFactory.query();
data.$promise.then(function (data){
$scope.tableParams.reload();
});
}
// Add table row to table in modal and call updateTable() on closing modal
$scope.addRow = function(){
var modalInstance = $modal.open({
templateUrl: 'resources/partials/newrecord.html',
controller: NewRecordModalCtrl
})
modalInstance.result.then(function(){
updateTable();
});
}
答案 3 :(得分:1)
伙计们,现在我支持这个回购,最后在v0.4.2中修复了问题!