两个过滤器 - 添加查询字符串不起作用?

时间:2018-01-30 06:33:21

标签: angularjs ionic-framework

我有一个离子1.0项目。

以下代码为控制器设置过滤器categoryTitle

app.js

  .state('tab.events', {
    url: '/events/:categoryTitle',
    views: {
      'tab-events': {
        templateUrl: 'templates/tab-events.html',
        controller: 'EventsCtrl'
      }
    }
  })

controllers.js

  .controller('EventsCtrl', function ($scope, $stateParams, EventService) {
    var category = $stateParams.categoryTitle;
    // var period = $stateParams.period;
    var events = EventService.query({ category: category, period: period });
    events.$promise.then(function (response) {
      $scope.events = response;
      $scope.category = category;
      // $scope.period = period;
    });
  })

因此网址http://localhost:8100/#/tab/events/Music会过滤页面以仅显示音乐类别。现在我需要添加另一个过滤器period。所以我将app.js更改为以下内容并取消注释controller.js

中的两行
  .state('tab.events', {
    url: '/events/:categoryTitle?p=:period', // Added "?p=:period"
    views: {
      'tab-events': {
        templateUrl: 'templates/tab-events.html',
        controller: 'EventsCtrl'
      }
    }
  })

但是,http://localhost:8100/#/tab/events/Music?p=weekend始终在控制器行undefined中获得var period = $stateParams.period;

1 个答案:

答案 0 :(得分:1)

我相信你正在监视错误的参数。在您的示例中,第二个参数(您在查询字符串中设置的参数将是p而不是period

查看示例here,说明$stateParams服务如何运作

示例:

// you navigated your browser to:
'/users/123/details/default/0?from=there&to=here'

// Your $stateParams object would be
{ id:'123', type:'default', repeat:'0', from:'there', to:'here' }

从示例中可以看出,$stateParams对象将返回一个对象,该对象包含定义为:parameter的参数或定义为查询字符串参数的参数