【问题标题】:Angular Route & pagination in angularJSAngularJS中的角度路由和分页
【发布时间】:2014-07-26 12:38:26
【问题描述】:

我正在 angular-ui-bootstrap 中进行分页

searchapp.config(function ($routeProvider, $locationProvider) {
  $locationProvider.html5Mode(true);

  $routeProvider
    .when('/search?page', {
      controller: 'classifiedAdController',
      reloadOnSearch: false
  });
});

searchapp.controller('classifiedAdController', function ($scope, $location, $routeParams, ClassifiedAd) {
$scope.$watch('currentPage', function(page) {
      console.log(page);
      $location.search('page', page);
    });
});

这是我的实现,当页面和分页正确加载 localhost:3000/search 时一切正常。然后当我点击页面1,2,3时,url会变成localhost:3000/search?page=2

但是当我在地址栏中手动复制 localhost:3000/search?page=2 时,它会将我的 url 路由回 localhost:3000/search

任何提示或想法来实现这一点? angularRoute 提供者究竟是怎么做的?

【问题讨论】:

    标签: angularjs pagination angularjs-routing


    【解决方案1】:

    我会使用更 Angular 的方式来做到这一点,你的路线可以是 /search/page/2,你可以使用 :parameters 向你的角度路线添加参数,它看起来像:

      $routeProvider
        .when('/search/page/:page', {
           controller: 'classifiedAdController',
           reloadOnSearch: false
       });
    

    然后您将拥有一个可以从控制器中检索的“页面”参数。 有类似的东西可能也有效:.when('/search?page=:page', { 但我从未尝试过

    【讨论】:

    • yupz,我发现 /search?page 是正确的语法,但不知道为什么,当我手动键入 localhost:3000/search?page=2 时,它会将我路由回 localhost:3000/search .这实际上不是我希望的行为。
    【解决方案2】:

    只需删除路由中的?page

    使用这个:

    $routeProvider
        .when('/search', {
            controller: 'classifiedAdController',
            reloadOnSearch: false
        });
    

    然后在你的控制器中:

      $scope.$watch(function() {
          return $location.search().page
      }, function(newVal, oldVal) {
          $scope.page = newVal;
      });
    

    LIVE DEMO

    【讨论】:

    • 嗯,但我希望手动执行 localhost:3000/search?page=2,然后它实际上会查询数据库以获取 page2 结果。我尝试过您的解决方案,但不起作用...有什么想法吗?
    • 您可以在$location.search().page; 上添加观察者查看我现在编辑的答案。
    • 嗨@Raghav,你的实现和我现有的实现有什么不同?我看不出有什么不同,当我更改您的代码以对其进行测试时,是的,它仍然是 url,但是我的 angular bootstrap 分页不再起作用。想过吗?
    • 您正在监视范围变量,并且在更改时,您正在更改位置参数。在我的实现中,我正在观察位置参数的变化,然后更新范围变量。
    • hmm,但是当我点击下一页或上一页时,我的分页不再起作用,参数不改变..
    猜你喜欢
    • 2023-03-30
    • 2020-12-08
    • 2022-01-05
    • 1970-01-01
    • 2021-10-01
    • 2017-08-27
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多