Как настроить изменение ngclass, когда изменение маршрута происходит в AngularJS?

Я пытаюсь добавить класс на моей главной .container класс, когда маршрут меняется.

Мое текущее простое решение включает в себя ng-click в каждом главном меню (нет других URL на странице):

app.controller('MainCtrl', ['$scope', function( $scope ){

  $scope.setMain = function( value ){ $scope.isMain = value };

}]);

Тогда в моем HTML:

<div ng-controller="MainCtrl" class="container" ng-class="{'main': isMain}">
  <ul class="main-menu">
    <li><a href="#" ng-click="setMain(true)"></li>
    <li><a href="#/page-1" ng-click="setMain(false)"></li>
    <li><a href="#/page-2" ng-click="setMain(false)"></li>
  </ul>
  <div ng-view></div>
</div>

Кажется, это работает нормально, пока мне нужно добавить еще URL-адреса, проблема в том, что пользователь не нажимает ни на одну из ссылок и напрямую обращается к URL-адресу, который он не получает в основном классе.

Есть лучший способ сделать это?

1 ответ

Решение

Вы можете использовать несколько разных опций, но я думаю, что вам будет проще настроить $scope.isMain значение при инициализации контроллера, глядя на $location, Так что внутри контроллера вы можете получить что-то вроде:

var loc = $location.path();
if(loc === /* some route rule you require */){
    $scope.isMain = true;
}

Посмотрите здесь: http://docs.angularjs.org/api/ngRoute/service/$ route. В приведенном ниже примере есть несколько разных примеров того, к какому типу данных вы можете получить доступ в отношении маршрута.

Другие вопросы по тегам