【问题标题】:angular-bootstrap 0.12.0 navbar dropdown not workingangular-bootstrap 0.12.0 导航栏下拉菜单不起作用
【发布时间】:2016-11-03 05:17:39
【问题描述】:

我正在使用 AngularJS 1.3.10 以及 Bootstrap 3.3.2 和 angular-ui-bootstrap 0.12.0。我也在使用 Angular ui-router 进行路由。导航栏下拉菜单似乎在 0.12.0 中不起作用。回退到 0.11.0 有效。 这是我正在使用的代码(部分):

	<div class="navbar navbar-inverse navbar-fixed-top" role="navigation" ng-controller="searchController">
	    <div class="container-fluid">
	        <div class="navbar-header">
		    <button type="button" class="navbar-toggle" ng-init="navCollapsed = true" ng-click="navCollapsed = !navCollapsed">
			<span class="sr-only">Toggle navigation</span>
			<span class="icon-bar"></span>
			<span class="icon-bar"></span>
			<span class="icon-bar"></span>
		    </button>
	            <a ui-sref="dashboard" class="navbar-brand">My Application</a>
	        </div>
	        <ul class="nav navbar-nav navbar-right collapse navbar-collapse" collapse="navCollapsed" >
	            <li ><a ui-sref="dashboard" ng-click="navCollapsed = true"><i class="fa fa-bullseye"></i> Dashboard</a></li>
	            <li ><a ui-sref="topmenu1" ng-click="navCollapsed = true"><i class="fa fa-list"></i> Top Menu 1</a></li>
                    <li class="dropdown">
	                <a class="dropdown-toggle" data-toggle="dropdown">Dropdown
                            <span class="caret"></span>
                        </a>
                        <ul class="dropdown-menu">
        	            <li><a ui-sref="item1">Item 1</a></li>
    		            <li><a ui-sref="item2">Item 2</a></li>
    		            <li><a ui-sref="item3">Item 3</a></li>
                        </ul>
                    </li>
	        </ul>
	    </div>
	</div>	

【问题讨论】:

  • 让我强调一下,上面的代码在 angular-ui-bootstrap 的 0.10.0 和 0.11.0 中运行良好。它在 0.12.0 中停止工作,所以我想知道 0.12.0 中是否存在导致它停止工作的问题。我已将代码回滚以使用 0.11.0,但想发布问题以防出现错误。

标签: twitter-bootstrap angular-ui-router angular-ui-bootstrap


【解决方案1】:

他们添加了您现在必须使用的 uib-dropdownuib-dropdown-toggle 指令。这是您更新的代码 sn-p:

<div class="navbar navbar-inverse navbar-fixed-top" role="navigation" ng-controller="searchController">
    <div class="container-fluid">
            <div class="navbar-header">
            <button type="button" class="navbar-toggle" ng-init="navCollapsed = true" ng-click="navCollapsed = !navCollapsed">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a ui-sref="dashboard" class="navbar-brand">My Application</a>
            </div>
            <ul class="nav navbar-nav navbar-right collapse navbar-collapse" collapse="navCollapsed" >
            <li ><a ui-sref="dashboard" ng-click="navCollapsed = true"><i class="fa fa-bullseye"></i> Dashboard</a></li>
            <li ><a ui-sref="topmenu1" ng-click="navCollapsed = true"><i class="fa fa-list"></i> Top Menu 1</a></li>
            <!-- Notice the dropdown directive -->
            <li class="dropdown" uib-dropdown>
                <!-- Notice the dropdown-toggle directive -->
                <a class="dropdown-toggle" data-toggle="dropdown" uib-dropdown-toggle>Dropdown
                    <span class="caret"></span>
                </a>
                <ul class="dropdown-menu">
                        <li><a ui-sref="item1">Item 1</a></li>
                        <li><a ui-sref="item2">Item 2</a></li>
                        <li><a ui-sref="item3">Item 3</a></li>
                </ul>
            </li>
            </ul>
    </div>
</div>

你可以在http://angular-ui.github.io/bootstrap/#/dropdown看到一些例子

【讨论】:

  • 这是我一直在寻找的答案。谢谢!作为更新,现在使用uib-dropdownuib-dropdown-toggle
【解决方案2】:

我认为你做错了。您使用的是 Bootstrap 而不是 UI-Bootstrap。这是一个例子:

模板:

<div ng-controller="HeaderCtrl" class="navbar navbar-default navbar-static-top" role="navigation">
    <div class="container-fluid">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" ng-init="navCollapsed = true" ng-click="navCollapsed = !navCollapsed">
                <span class="sr-only">Toggle navigation</span>
                <i class="fa fa-bars"></i>
            </button>
            <a class="navbar-brand" href="#/home">Project Title</a>
        </div>
        <div class="navbar-collapse collapse" collapse="navCollapsed" ng-click="navCollapsed=true">
            <ul class="nav navbar-nav navbar-right">
                <li ng-class="{ active: isActive('/home') }"><a href="#/home">Home</a></li>
                <li ng-class="{ active: isActive('/about') }"><a href="#/about">About</a></li>
            </ul>
        </div>
    </div>
</div>

控制器:

var app = angular.module('controllers.header', ['ngRoute', 'ui.bootstrap']);

app.controller("HeaderCtrl", function($scope, $location) {

    $scope.isActive = function (viewLocation) {
        var active = (viewLocation === $location.path());
        return active;
    };

});

看看这个项目:Angular Project Template。它是 Angular 1.3、Bootstrap 和 UI Bootstrap。正是您想要实现的目标。

确保所有内容都已正确安装并且控制台中没有错误。

【讨论】:

  • 该示例用于折叠整个菜单。我只是想向顶部导航栏添加一个下拉菜单项。我将添加整个菜单代码以进一步解释。
  • 项目代码完全满足了我两天的研究,你救了我的心理健康!
  • @Stephane.P 很高兴它有帮助!
猜你喜欢
  • 2015-02-10
  • 1970-01-01
  • 2013-10-28
  • 2019-05-10
  • 2023-03-14
  • 2021-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多