Angularjs: dir-pagination-controls 不显示下一页,即使在按下页面按钮之后
Angularjs: dir-pagination-controls doesn't show the next page, even after the page button is pressed
我一直在尝试合并 dir-pagination-controls
,但无法显示基于所选页面的页面。
<div ng-controller="TableController as tc">
<table>
<tbody dir-paginate="order in tc.orders | itemsPerPage: 10" total-items="tc.totalOrders" current-page="currentPage">
<tr ng-click="tc.showOrderDetail(order.id)">
<td ng-bind="order.id"></td>
<!-- Simliar lines are here -->
</tr>
</tbody>
</table>
<dir-pagination-controls
boundary-links="true"
on-page-change="tc.pageChangeHandler(newPageNumber)"
template-url="dirPagination.tpl.html">
</dir-pagination-controls>
</div>
这 table
显示了我的预期。但是,当我按下任何按钮时,生成的分页控制器不会显示下一页。
这是脚本的相关部分。
angular.module('adminAngular', ['ui.bootstrap','dialogs.main','angularUtils.directives.dirPagination'])
.controller('TableController', function($http){
var instance = this;
this.orders = [];
$http({
//works fine
}).then(function (response) {
instance.orders = response.data;
instance.totalOrders = instance.orders.length;
//The "instance.orders" gets the expected data, and used for in dir-paginate="order in tc.orders
});
this.pageChangeHandler = function(num) {
console.log('going to page ' + num);
};
this.pageChanged = function(newPage) {
getResultsPage(newPage);
};
UPDATE pageChangeHandler
显示按下了哪个按钮,但页面没有改变。 (其他都很好。)
此代码基于the official document and its demo,但我找不到真正错误的地方。
如果您能提出任何建议,我将不胜感激。
解决方案是从 dir-paginate
指令中删除 total-items
。
这是一个带有简单示例的 plunker。
当您进行异步调用以获取 each 页面项目时,将使用 total-items
属性。
因此,首先异步调用您获取第一页的项目,并且当您更改页面时您应该从服务器获取相应页面的项目。
total-items
告诉分页指令你总共有多少页,所以它知道如何构建元素。
如果你想对每个页面进行异步调用,你可以使用 total-items
并在你进行另一个异步调用的地方实现 pageChanged
。
$scope.pageChanged = function(newPage) {
// get orders for newPage number
$http.get(...).then(function(response) {
// orders for newPage number fill the same 'orders' array
this.orders = response.data
});
}
我一直在尝试合并 dir-pagination-controls
,但无法显示基于所选页面的页面。
<div ng-controller="TableController as tc">
<table>
<tbody dir-paginate="order in tc.orders | itemsPerPage: 10" total-items="tc.totalOrders" current-page="currentPage">
<tr ng-click="tc.showOrderDetail(order.id)">
<td ng-bind="order.id"></td>
<!-- Simliar lines are here -->
</tr>
</tbody>
</table>
<dir-pagination-controls
boundary-links="true"
on-page-change="tc.pageChangeHandler(newPageNumber)"
template-url="dirPagination.tpl.html">
</dir-pagination-controls>
</div>
这 table
显示了我的预期。但是,当我按下任何按钮时,生成的分页控制器不会显示下一页。
这是脚本的相关部分。
angular.module('adminAngular', ['ui.bootstrap','dialogs.main','angularUtils.directives.dirPagination'])
.controller('TableController', function($http){
var instance = this;
this.orders = [];
$http({
//works fine
}).then(function (response) {
instance.orders = response.data;
instance.totalOrders = instance.orders.length;
//The "instance.orders" gets the expected data, and used for in dir-paginate="order in tc.orders
});
this.pageChangeHandler = function(num) {
console.log('going to page ' + num);
};
this.pageChanged = function(newPage) {
getResultsPage(newPage);
};
UPDATE pageChangeHandler
显示按下了哪个按钮,但页面没有改变。 (其他都很好。)
此代码基于the official document and its demo,但我找不到真正错误的地方。
如果您能提出任何建议,我将不胜感激。
解决方案是从 dir-paginate
指令中删除 total-items
。
这是一个带有简单示例的 plunker。
当您进行异步调用以获取 each 页面项目时,将使用 total-items
属性。
因此,首先异步调用您获取第一页的项目,并且当您更改页面时您应该从服务器获取相应页面的项目。
total-items
告诉分页指令你总共有多少页,所以它知道如何构建元素。
如果你想对每个页面进行异步调用,你可以使用 total-items
并在你进行另一个异步调用的地方实现 pageChanged
。
$scope.pageChanged = function(newPage) {
// get orders for newPage number
$http.get(...).then(function(response) {
// orders for newPage number fill the same 'orders' array
this.orders = response.data
});
}