2013-09-22 2 views
1

следовать до ответа, представленного здесь: AngularJS - Changing a query param term within $routeProvider?

При использовании маршрута Params, можно установить «активный» класс к элементу или его родительский элемент? Вот что я пробовал, но «активный» класс не добавляется в родительский элемент.

Является ли проблема, с которой сталкиваюсь из-за того, что я использую заполнитель '/: 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> 

Любая обратная связь будет очень признателен!

Спасибо! Roc.

ответ

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> 
+0

Привет Brandon, спасибо за совет. Хотя это помогло при добавлении классов, когда это необходимо в представлении, навигация помещается вне представления. Если вы можете взглянуть на эту [ссылку] (http://pastebin.com/5B6yxzjr), это было бы здорово. В принципе, навигация не помещается внутри представления, поэтому я пытаюсь настроить ее за пределы представления. Спасибо btw за проверку этого вопроса. – Roc

+1

@Roc Вы можете следить за изменениями маршрута в области видимости, наблюдая за событием '$ routeChangeSuccess'. Вот пример: http://jsfiddle.net/BinaryMuse/gwHat/ –

+0

Спасибо Брэндон! Это сделал трюк. Очень благодарен за помощь и прохождение игры. – Roc

Смежные вопросы