ngtable 分页和排序
ngtable paging and sorting
我在使用 ngtable 时遇到以下问题。当我发出 http get 请求并获取数据时,ngtable 一切正常,但我无法订购。但是如果我发出一个新的 http get 请求(没有重新加载页面)。然后向我显示 table 和新数据,正确显示新请求的数据量,但不显示分页,也不显示 select 每页行数的选项。我尝试重新加载 table 参数,但没有结果。
我的代码:
$scope.httpget = function(uri)
{
$scope.data=[];
$http.get(uri).then(
function(result){
$scope.data = result.data;
$scope.tableParams = new ngTableParams({
page: 1,
count: 10,
filter: {
message: ''
},
sorting: {
timestamp: 'asc'
}
},
{
getData: function($defer, params) {
var orderedData = params.sorting() ?
$filter('orderBy')($scope.data, params.orderBy()) :
$scope.data;
params.total(orderedData.length);
$defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}
});
}
);
}
<table ng-table='tableParams'>
<tr ng-repeat='d in $data | filter:search'>
<td data-title="'Collected Timestamp'" sortable="'timestamp'"> {{d.timestamp}} </td>
<td data-title="'Tag Name'", sortable="'tag_name'"> {{d.tag_name}} </td>
<td data-title="'Value'", sortable="'value'"> {{d.value}} </td>
<tr>
</table>
第一次 http get 后结果正常
第二次 http get 后结果不好(无分页)
你用过吗
$scope.tableParams.total(data.length)
和
$scope.tableParams.reload();
在任何时候?你 'do another get request' 究竟如何?如果没有帮助,请尝试上传您的代码
这也发生在我身上。我诊断的问题是 ng-table
实例的重复初始化。
您需要将 ng-table
的初始化放入单独的函数中。(在我的例子中,它是 init()
)
在你的代码中,它应该是这样的:
$scope.data = [];
init();
function init() {
$scope.tableParams = new ngTableParams({
page: 1,
count: 10,
filter: {
message: ''
},
sorting: {
timestamp: 'asc'
}
},{
getData: function ($defer, params) {
var orderedData = params.sorting() ?
$filter('orderBy')($scope.data, params.orderBy()) :
$scope.data;
params.total(orderedData.length);
$defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}
});
};
$scope.httpget = function (uri) {
$http.get(uri).then(function (result) {
$scope.data = result.data;
$scope.tableParams.total($scope.data.length);
$scope.tableParams.reload();
}
);
}
希望对您有所帮助。
我在使用 ngtable 时遇到以下问题。当我发出 http get 请求并获取数据时,ngtable 一切正常,但我无法订购。但是如果我发出一个新的 http get 请求(没有重新加载页面)。然后向我显示 table 和新数据,正确显示新请求的数据量,但不显示分页,也不显示 select 每页行数的选项。我尝试重新加载 table 参数,但没有结果。
我的代码:
$scope.httpget = function(uri)
{
$scope.data=[];
$http.get(uri).then(
function(result){
$scope.data = result.data;
$scope.tableParams = new ngTableParams({
page: 1,
count: 10,
filter: {
message: ''
},
sorting: {
timestamp: 'asc'
}
},
{
getData: function($defer, params) {
var orderedData = params.sorting() ?
$filter('orderBy')($scope.data, params.orderBy()) :
$scope.data;
params.total(orderedData.length);
$defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}
});
}
);
}
<table ng-table='tableParams'>
<tr ng-repeat='d in $data | filter:search'>
<td data-title="'Collected Timestamp'" sortable="'timestamp'"> {{d.timestamp}} </td>
<td data-title="'Tag Name'", sortable="'tag_name'"> {{d.tag_name}} </td>
<td data-title="'Value'", sortable="'value'"> {{d.value}} </td>
<tr>
</table>
第一次 http get 后结果正常
第二次 http get 后结果不好(无分页)
你用过吗
$scope.tableParams.total(data.length)
和
$scope.tableParams.reload();
在任何时候?你 'do another get request' 究竟如何?如果没有帮助,请尝试上传您的代码
这也发生在我身上。我诊断的问题是 ng-table
实例的重复初始化。
您需要将 ng-table
的初始化放入单独的函数中。(在我的例子中,它是 init()
)
在你的代码中,它应该是这样的:
$scope.data = [];
init();
function init() {
$scope.tableParams = new ngTableParams({
page: 1,
count: 10,
filter: {
message: ''
},
sorting: {
timestamp: 'asc'
}
},{
getData: function ($defer, params) {
var orderedData = params.sorting() ?
$filter('orderBy')($scope.data, params.orderBy()) :
$scope.data;
params.total(orderedData.length);
$defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}
});
};
$scope.httpget = function (uri) {
$http.get(uri).then(function (result) {
$scope.data = result.data;
$scope.tableParams.total($scope.data.length);
$scope.tableParams.reload();
}
);
}
希望对您有所帮助。