2014-11-18 5 views
1

Я только что добавил ui-bootstrap в свой пакет, основанный на генераторе углового ползуна. До этого я использовал следующий код, чтобы свернуть Navbar на небольших устройствах, когда изменение маршрута:Свернуть Navbar при изменении маршрута

$rootScope.$on('$stateChangeSuccess', function (event, next) { 
    // collapse navbar 
    angular.element('.navbar-collapse').collapse('hide'); 
}); 

Это не возможно больше из-за директивы, как я понимаю, с # 1672, но как я могу вручную свернуть Navbar затем ?

Спасибо заранее, Майкл

+0

Можете ли вы предоставить код вашей навигационной панели, таким образом это легче предложить изменения –

+0

конечно, все это здесь: https://github.com/Kageetai/ JayMap/tree/master/client/components/navbar – Kageetai

ответ

1

Вы можете свернуть Navbar на клик (он чувствует себя более естественно для меня) просто путем добавления (или усиления) в ng-click обработчик на каждом <a>:

<a ng-href="{{item.link}}" ng-click="isCollapsed=true">{{item.title}}</a> 
<a href="" ng-click="isCollapsed=true;changeLanguage('en')">{{ 'LANG_BUTTON_EN' | translate }}</a> 

Если вы действительно хотите это сделать после события $stateChangeSuccess, добавьте тот же прослушиватель событий к вашему navbar.controller.js (нет необходимости слушать $rootScope, хотя - или это событие ограничено? Я не знаю, поэтому, пожалуйста, будьте осторожны):

angular.module('jayMapApp') 
    .controller('NavbarCtrl', function ($scope, $location, $translate, Auth) { 
     ... 
     $scope.$on('$stateChangeSuccess', function (event, next) { 
      $scope.isCollapsed = true; 
     }); 
     ... 
+0

Спасибо, ваше второе решение работает отлично, и мне больше нравится, чтобы не мешать разметке. И, конечно, вы правы, мне не нужно использовать $ rootScope – Kageetai

+0

Да, разметка становится грязнее. Обычно я не размещаю код в разметке; но я делаю исключение для отдельных случаев, таких как navbar. –

+0

О, и я заметил, что только раскрывающееся меню на панели навигации закрывается, а не сама навигационная панель, когда я нажимаю одну из ссылок на языках там. Может ли быть способ закрыть это? Это связано с областью навигации? – Kageetai