AngularJS:在li上添加Active效果和悬停效果

时间:2014-07-03 07:45:04

标签: javascript angularjs

您好我面临的问题是让Li成为Active标签,我已经添加了悬停效果但是如何添加Active标签?我使用Angular的ng-show和ng-hide来改变li中的图标。这是我的代码

<li ng-mouseenter="show = true" ng-mouseleave="show = false" id="home">
        <img src="images/home.png" ng-hide="show" class="whiteClass" />
        <img src="images/home_h.png" ng-show="show" class="blackClass"/>
    </li>

如何使用ng-click将其设为活动标签? 提前致谢

更新:

<li  ng-mouseenter="liMouaeEnter()" ng-mouseleave="liMouseLeave()" id="issuesLi"  ng-click="navbarclick($event , issueTab)">
        <img src="images/issues.png" ng-class="{'active': !isActive, 'inactive': isActive}"/>
        <img src="images/issues_h.png" ng-class="{'active': isActive, 'inactive': !isActive}"/>

    </li>

这里是控制器上的jS文件

  var navClickBool = false;
  $scope.liMouaeEnter = function(){
    $scope.isActive = false;
    this.isActive = true;
    navClickBool = false
   }

 $scope.navbarclick = function(event , template){
   $scope.isActive = false;  
   this.isActive = true;
   navClickBool = true

 }

 $scope.liMouseLeave = function(){
   if(navClickBool){
      return
   }
   this.isActive = false;
  }

1 个答案:

答案 0 :(得分:3)

如果您需要在元素上切换类,不仅要显示/隐藏它,您可以使用ng-class代替ng-hide / ng-showng-class根据$scope变量的真值自动添加/删除类。您可以在ng-click上切换该真值(自动将onClick事件绑定到DOM节点,就像on-mouseenter绑定onMouseenter一样。)

<div ng-init="isActive = false">    
    <div ng-click="isActive = !isActive " ng-class="{'active': isActive}">
       <em>Foo</em>
    </div>
</div>

您现在只需编写.active { } CSS规则。

此外,您可以在ng-class

上添加多个规则

ng-class="{'active': isActive, 'inactive': !isActive}"

这将按预期工作(在两个类之间切换)。

请注意,我使用ng-init将布尔值初始化为false。您也可以直接在控制器中初始化它($scope.isActive = false;)。