AngularJS 导航栏动态添加.active

在传统jQuery中,实现导航栏动态添加.active类的思路比较简单,就是当点击的时候,清除其他.active,然后给当前类加上.active。

但是在AngularJS中,就不能再采用这种jQuery思维来实现了。

思路如下:

  1、定义items,存储导航栏的内容

  2、在html中,用ng-repeat 指令去变量items,输出导航栏的内容

  3、用ng-class{'active', isActive(item.href)} 指令去判断当前的url与item.href是否相等,相等则加上.active

  4、在controller的函数中 isActive(href)去判断,如果二者相等返回true

JS代码

 1 .controller('HeaderCtrl', ['$scope','$location', function ($scope,$location) {
 2         $scope.items = [{
 3             id: '1', name: '首页', href: '#/'
 4         },{
 5             id: '2', name: '活期', href: '#/product/tmb'
 6         },{
 7             id: '3', name: '定期', href: '#/product/dcb'
 8         },{
 9             id: '4', name: '添牛', href: '#/product/tnb'
10         },{
11             id: '5', name: '安全', href: '#/security'
12         },{
13             id: '6', name: '账户', href: '#/profile'
14         }]
15 
16         $scope.selected = 1;
17         $scope.isActive = function (current) {
18             var href = '#'+$location.url();
19             return current === href;
20         }
21     }])

HTML代码

<ul id="nav1" class="nav nav-pills" role="tablist">
                <li role="presentation" ng-repeat="item in items">
                    <div class="header_home" ng-class="{'active':isActive(item.href)}">
                        <a ng-href="{{item.href}}" ><span class="h4">{{item.name}}</span></a>
                    </div>
                </li>
</ul>

 

posted @ 2015-09-26 14:36  前端超人  阅读(2087)  评论(0编辑  收藏  举报