【问题标题】:Deactivating Bootstrap Navbar button using AngularJS使用 AngularJS 停用引导导航栏按钮
【发布时间】:2016-05-09 01:50:56
【问题描述】:

这里有引导导航栏的代码:

var cvApplication = angular.module('cvApplication', []);

cvApplication.controller('contentCtrl', function ($scope) {
    $scope.navButtons = ["Home", "About", "Contacts"];
    $scope.btnActive = "About";
});
<!DOCTYPE html>
<html lang="en" ng-app="cvApplication" ng-cloak ng-init="">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
        <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
        <link rel="stylesheet" href="style.css">
    </head>
    <body>
        <nav class="navbar navbar-default navbar-static-top" ng-controller="contentCtrl">
            <div class="container-fluid">

                <div class="navbar-header">
                    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#mainNavBarToggler">
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </button>
                    <a href="#" class="navbar-brand">Subjects</a>
                </div>

                <div class="collapse navbar-collapse" id="mainNavBarToggler">
                    <ul class="nav navbar-nav">
                        <li ng-repeat="navButton in navButtons" ng-class="{ active: btnActive == navButton }" ng-click="btnActive = navButton">
                            <a href="#">{{navButton}}</a>
                        </li>
                    </ul>
                </div>
            </div>
        </nav>
      
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script>
        <script src="script.js"></script>
    </body> 
</html>

一切都很好,除了当您单击导航上的一个按钮然后单击另一个按钮时,您单击的前一个按钮不会被停用(也就是“活动”类没有被删除它仍然突出显示)。我该如何解决这个问题?

【问题讨论】:

    标签: javascript css angularjs twitter-bootstrap navbar


    【解决方案1】:

    您可以使用控制器中的函数来更新活动按钮的变量。

    var cvApplication = angular.module('cvApplication', []);
    
    cvApplication.controller('contentCtrl', function ($scope) {
        $scope.navButtons = ["Home", "About", "Contacts"];
        $scope.btnActive = "About";
        $scope.updateActive = function(navButton) {
                $scope.btnActive = navButton;
        };
    });
    <!DOCTYPE html>
    <html lang="en" ng-app="cvApplication" ng-cloak ng-init="">
        <head>
            <meta charset="UTF-8">
            <title>Title</title>
            <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
            <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
            <link rel="stylesheet" href="style.css">
        </head>
        <body>
            <nav class="navbar navbar-default navbar-static-top" ng-controller="contentCtrl">
                <div class="container-fluid">
    
                    <div class="navbar-header">
                        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#mainNavBarToggler">
                            <span class="icon-bar"></span>
                            <span class="icon-bar"></span>
                            <span class="icon-bar"></span>
                        </button>
                        <a href="#" class="navbar-brand">Subjects</a>
                    </div>
    
                    <div class="collapse navbar-collapse" id="mainNavBarToggler">
                        <ul class="nav navbar-nav">
                            <li ng-repeat="navButton in navButtons" ng-class="{ active: btnActive == navButton }" ng-click="updateActive(navButton)">
                                <a href="#">{{navButton}}</a>
                            </li>
                        </ul>
                    </div>
                </div>
            </nav>
          
            <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script>
            <script src="script.js"></script>
        </body> 
    </html>

    Here 是类似的解决方案。

    我不知道为什么它适用于函数,但不适用于视图中的插值。可能,您会看到许多本地范围。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-25
      • 2017-08-12
      • 2017-09-20
      相关资源
      最近更新 更多