You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AngularJS中dir-pagination如何跳转至指定分页页面?

解决AngularJS dir-paginate返回指定分页页的问题

核心思路

因为列表页和详情页是独立页面,没法直接共享分页控件实例,所以得靠URL传参把当前页码带到详情页,返回时再带回列表页,最后列表页加载时读取参数跳转到对应页码。

具体步骤

1. 跳转详情页时携带当前页码

在列表页的行点击事件里,先获取当前分页页码(需要注入paginationService),再把页码拼到详情页的URL参数里:

// 列表页控制器
app.controller('ListController', function($scope, $location, paginationService) {
  // 点击行跳转详情页的方法
  $scope.goToDetail = function(record) {
    var currentPage = paginationService.getCurrentPage();
    // 将页码作为URL参数传入详情页
    $location.path('/detail/' + record.id).search('page', currentPage);
  };
});

2. 详情页返回时带回页码

详情页的返回按钮,直接跳回列表页并带上之前的page参数:

<!-- 详情页返回按钮 -->
<button ng-click="goBack()">返回列表</button>
// 详情页控制器
app.controller('DetailController', function($scope, $location) {
  $scope.goBack = function() {
    var page = $location.search().page;
    // 跳回列表页并携带页码参数
    $location.path('/list').search('page', page);
  };
});

3. 列表页加载时跳转指定页

列表页初始化时,读取URL里的page参数,调用分页服务的方法跳转到对应页码。注意要等数据加载完成后再执行跳转,避免数据未就绪导致失效:

// 列表页控制器
app.controller('ListController', function($scope, $location, paginationService, yourDataService) {
  // 加载列表数据
  $scope.loadData = function() {
    yourDataService.getList().then(function(data) {
      $scope.data = data;
      // 数据加载完成后,检查URL中的页码参数
      var targetPage = $location.search().page;
      if (targetPage) {
        // 转成数字类型,因为URL参数是字符串
        paginationService.setCurrentPage(parseInt(targetPage));
      }
    });
  };
  $scope.loadData();
});

补充说明

你的分页HTML代码没问题,但要确保控制器已正确注入paginationService,且itemsPerPage的数值(这里是20)和分页控件的配置保持一致。之前调用setCurrent无效果,大概率是没注入服务,或者跳转时机早于数据加载完成的时间。

内容的提问来源于stack exchange,提问作者fresko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 17:31:07