1

对此处提供的答案的跟进:AngularJS - 在 $routeProvider 中更改查询参数项?

使用路由参数时,是否可以为元素或其父元素设置“活动”类?这是我尝试过的,但没有将“活动”类添加到父元素中。

我所面临的问题是因为我使用了 '/:feed_term' 占位符吗?

.config(function($routeProvider) {
  $routeProvider
    .when('/:feed_term', {templateUrl: 'views/feedlist.html', controller: 'searchtermCtrl', activetab: ':feed_term' })      

    .otherwise({redirectTo: '/term/'});
})

.controller('searchtermCtrl', function($scope, Feed, $routeParams, $route){
  $scope.feed = Feed.query({ feed : $routeParams.feed_term });
  $scope.activeTab = $route.current.activetab
})

html看起来像这样:

<li ng-class="{active: $route.current.activetab == 'feedterm_1'}">
  <a href="#/feedterm_1">Feed 1</a>
</li>
<li ng-class="{active: $route.current.activetab == 'feedterm_2'}">
  <a href="#/feedterm_2">Feed 2</a>
</li>

任何反馈将不胜感激!

谢谢!鹏。

4

1 回答 1

1

请记住,除非数据附加到范围,否则您的视图无法访问数据。您的视图访问$route.current,但该数据不在范围内。根据您发布的代码,这样的事情应该可以工作:

.config(function($routeProvider) {
  $routeProvider
    .when('/:feed_term', {
      templateUrl: 'views/feedlist.html',
      controller: 'searchtermCtrl'
    })
    .otherwise({redirectTo: '/term/'});
})

.controller('searchtermCtrl', function($scope, Feed, $routeParams){
  $scope.feed = Feed.query({ feed : $routeParams.feed_term });
  $scope.activeTab = $routeParams.feed_term
})
<li ng-class="{active: activeTab == 'feedterm_1'}">
  <a href="#/feedterm_1">Feed 1</a>
</li>
<li ng-class="{active: activeTab == 'feedterm_2'}">
  <a href="#/feedterm_2">Feed 2</a>
</li>
于 2013-09-22T19:19:43.427 回答