AngularJS侧边栏链接在单击时保持活动状态

时间:2016-03-14 19:15:01

标签: angularjs twitter-bootstrap twitter-bootstrap-3 plunker

我正在创建一个基于此的侧边栏

http://plnkr.co/edit/xzcjStdvmkI2rpfMzLjI?p=preview

找到

this tutorial

但是,我希望在单击链接后保持选择处于活动状态。我已经尝试添加数据切换,但这似乎适用于导航丸而不是导航栏。我还发现了一个我试图实现的is-active-nav指令:

angular.module('sidebarmodule')
    .directive('isActiveNav', ['$location', function ($location) {
    return {
        restrict: 'A',
        link: function (scope, element) {
            scope.location = $location;
            scope.$watch('location.path()', function (currentPath) {
                if ('/#' + currentPath === element[0].attributes['href'].nodeValue) {
                    element.parent().addClass('active');
                } else {
                    element.parent().removeClass('active');
                }
            });

        }
    };
}]);

我在侧边栏模板中调用如下:

<li> <a is-active-nav href="#">Link1</a> </li>

我尝试的另一种方法是在我的控制器中添加$scope.isActive = function (viewLocation) { return viewLocation === $location.path(); };,然后添加到模板:<li ng-class="{ active: isActive('/importinvoice')}"><a href="#/firstlink">First Link</a></li>

但是,我所做的任何事情都不会在导航到该页面后突出显示侧边栏元素。我试图避开jQuery,因为我希望它只是一个AngularJS解决方案。

我尝试了这个stackoverflow answer的大多数解决方案,但无法使其中的任何一个解决这个问题。

2 个答案:

答案 0 :(得分:0)

您可以在tab中创建$scope属性,为其指定标签标识符,然后使用ng-class="{'active': tab==='tab1'}"

答案 1 :(得分:0)

使用它:

     <div class="sidebar" sidebar-directive="state" ng-init="item=-1">
        <a href="#" id="navigation-toggle" ng-click="toggleState()">Navigation</a>
        <ul class="navigation">
          <li class="navigation-items"> <a href="#" ng-click="item=0" ng-class="{'active':item==0}">Link1</a> 
          </li>
          <li class="navigation-items"> <a href="#"ng-click="item=1" ng-class="{'active':item==1}">Link2</a> 
          </li>
          <li class="navigation-items"> <a href="#" ng-click="item=2" ng-class="{'active':item==2}">Link3</a> 
          </li>
          <li class="navigation-items"> <a href="#" ng-click="item=3" ng-class="{'active':item==3}">Link4</a> 
          </li>
          <li class="navigation-items"> <a href="#" ng-click="item=4" ng-class="{'active':item==4}">Link4</a> 
          </li>
        </ul>
      </div>

请参阅链接:http://plnkr.co/edit/xzcjStdvmkI2rpfMzLjI?p=preview