我正在创建一个基于此的侧边栏
从http://plnkr.co/edit/xzcjStdvmkI2rpfMzLjI?p=preview 找到但是,我希望在单击链接后保持选择处于活动状态。我已经尝试添加数据切换,但这似乎适用于导航丸而不是导航栏。我还发现了一个我试图实现的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的大多数解决方案,但无法使其中的任何一个解决这个问题。
答案 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>