Подтвердить что ты не робот

Angular UI Bootstrap отзывчивый раскрывающийся список Navbar не работает должным образом в новой версии

Я только что создал проект AngularJS с grunt bower и Yeoman. Включена обновленная версия до Angular 1.3.13. Я хочу использовать Angular UI bootstrap. Я добавил Nav Bar, который реагирует. Но хотя на небольших экранах выпадающее меню, похоже, не работает. Когда я нажимаю на раскрывающееся меню, все меню скрывается.

вот мой index.html

<!doctype html>
<html class="no-js">
<head>
<meta charset="utf-8">
<title></title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width">
<!-- Place favicon.ico and apple-touch-icon.png in the root directory -->
<!-- build:css(.) styles/vendor.css -->
<!-- bower:css -->
<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css" />
<!-- endbower -->
<!-- endbuild -->
<!-- build:css(.tmp) styles/main.css -->
<link rel="stylesheet" href="styles/main.css">
<!-- endbuild -->
</head>
<body ng-app="webClientApp">
    <!--[if lt IE 7]>
      <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="#" onclick="location.href='http://browsehappy.com/'; return false;">upgrade your browser</a> to improve your experience.</p>
    <![endif]-->

    <!-- Add your site or application content here -->
    <header>
        <nav class="navbar navbar-default" role="navigation">
            <!-- Brand and toggle get grouped for better mobile display -->
            <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 class="navbar-brand" href="#/">Web Client</a>
            </div>

            <!-- Collect the nav links, forms, and other content for toggling -->
            <div class="collapse navbar-collapse"
                ng-class="!navCollapsed && 'in'" ng-click="navCollapsed=true">

                <ul class="nav navbar-nav">
                    <li class="active"><a href="">Link</a></li>
                    <li><a href="">Link</a></li>

                    <li class="dropdown"><a href="" class="dropdown-toggle" data-toggle="dropdown">Dropdown
                            <b class="caret"></b>
                    </a>
                        <ul class="dropdown-menu">
                            <li><a href="">Action</a></li>
                            <li><a href="">Another action</a></li>
                            <li><a href="">Something else here</a></li>
                            <li><a href="">Separated link</a></li>
                            <li><a href="">One more separated link</a></li>
                        </ul></li>

                </ul>
                <form class="navbar-form navbar-left" role="search">
                    <div class="form-group">
                        <input type="text" class="form-control" placeholder="Search">
                    </div>
                    <button type="submit" class="btn btn-default">Submit</button>
                </form>
                <ul class="nav navbar-nav navbar-right">
                    <li><a href="">Link</a></li>
                    <li class="dropdown"><a href="" class="dropdown-toggle"
                        data-toggle="dropdown">Dropdown <b class="caret"></b></a>
                        <ul class="dropdown-menu">
                            <li><a href="">Action</a></li>
                            <li><a href="">Another action</a></li>
                            <li><a href="">Something else here</a></li>
                            <li><a href="">Separated link</a></li>
                        </ul></li>
                </ul>
            </div>
            <!-- /.navbar-collapse -->
        </nav>
    </header>
    <div class="container">
        <div ng-view=""></div>
    </div>

    <div class="footer">
        <div class="container">
            <p>
                <span class="glyphicon glyphicon-heart"></span> from the Yeoman team
            </p>
        </div>
    </div>


    <!-- Google Analytics: change UA-XXXXX-X to be your site ID -->
    <script>
        !function(A, n, g, u, l, a, r) {
            A.GoogleAnalyticsObject = l, A[l] = A[l] || function() {
                (A[l].q = A[l].q || []).push(arguments)
            }, A[l].l = +new Date, a = n.createElement(g), r = n
                    .getElementsByTagName(g)[0], a.src = u, r.parentNode
                    .insertBefore(a, r)
        }(window, document, 'script',
                '//www.google-analytics.com/analytics.js', 'ga');

        ga('create', 'UA-XXXXX-X');
        ga('send', 'pageview');
    </script>

    <!-- build:js(.) scripts/vendor.js -->
    <!-- bower:js -->
    <script src="bower_components/jquery/dist/jquery.js"></script>
    <script src="bower_components/angular/angular.js"></script>
    <script src="bower_components/bootstrap/dist/js/bootstrap.js"></script>
    <script src="bower_components/angular-animate/angular-animate.js"></script>
    <script src="bower_components/angular-cookies/angular-cookies.js"></script>
    <script src="bower_components/angular-resource/angular-resource.js"></script>
    <script src="bower_components/angular-route/angular-route.js"></script>
    <script src="bower_components/angular-sanitize/angular-sanitize.js"></script>
    <script src="bower_components/angular-touch/angular-touch.js"></script>
    <script src="bower_components/angular-bootstrap/ui-bootstrap-tpls.js"></script>
    <!-- endbower -->
    <!-- endbuild -->

    <!-- build:js({.tmp,app}) scripts/scripts.js -->
    <script src="scripts/app.js"></script>
    <script src="scripts/controllers/main.js"></script>
    <script src="scripts/controllers/about.js"></script>
    <!-- endbuild -->
</body>
</html>

Я использую все последние версии JS. Вот мой bower.json

{
  "name": "web-client",
  "version": "0.0.0",
  "dependencies": {
    "angular": "^1.3.13",
    "bootstrap": "^3.3.2",
    "angular-animate": "^1.3.13",
    "angular-cookies": "^1.3.13",
    "angular-resource": "^1.3.13",
    "angular-route": "^1.3.13",
    "angular-sanitize": "^1.3.13",
    "angular-touch": "^1.3.13",
    "angular-bootstrap": "0.12.1"
  },
  "devDependencies": {
    "angular-mocks": "^1.3.13"
  },
  "appPath": "app",
  "moduleName": "webClientApp"
}

Полноэкранная панель навигации работает нормально. Но когда я изменяю размер браузера, работает панель реагирования. Меню появится только при нажатии кнопки переключения. Но когда я нажимаю на раскрывающееся меню, все меню скрывается.

Я следил за этим вопросом StackOverflow, и я получил один демонстрационный пример для плунжера для Это. Он отлично работает там.

Но я использую последние версии всех файлов. Так что моя не работает. Вот мой код, что я пытался в Plnker.

Как решить эту проблему? Спасибо.

4b9b3361

Ответ 1

Ваша выпадающая часть изменилась.

Здесь Plunker

<li dropdown>
     <a href="#" dropdown-toggle>Dropdown <b class="caret"></b></a>
     <ul class="dropdown-menu">
          <li><a href="#">...</a></li>
          ....
     </ul>
</li>

Ответ 2

ОБНОВЛЕНО для AngularJS 1.5+ и angular -ui-ootstrap 2.5 +

Я попробовал несколько вариантов рабочего выпадающего меню в AngularJS 1.5+ и UIBootstrap в строке меню - ничего не работало и устарело, поэтому я решил поделиться своим решением здесь, также доступным в этот репозит.

Что я сделал

Код (пожалуйста, обратитесь к пунктам 1 и 2 выше для дальнейших указаний)

<nav class="navbar navbar-default" role="navigation">
    <div class="navbar-header">
        <button type="button" class="navbar-toggle" ng-click="isNavCollapsed = !isNavCollapsed">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
        <a class="navbar-brand" href="#">ToDoSth</a>
    </div>
    <div class="collapse navbar-collapse" uib-collapse="isNavCollapsed">
        <ul class="nav navbar-nav">
            <li><a href="#">Link 1</a></li>
            <li><a href="#">Link 2</a></li>
            <li uib-dropdown on-toggle="toggled(open)">
                <a href id="simple-dropdown" uib-dropdown-toggle>Link 3 <span class="caret"></span></a>
                <ul class="dropdown-menu" uib-dropdown-menu aria-labelledby="simple-dropdown">
                    <li><a href="#">SubItem 1</a></li>
                    <li><a href="#">SubItem 2</a></li>
                    <li><a href="#">SubItem 3</a></li>
                    <li role="separator" class="divider"></li>
                    <li><a href="#">SubItem 4</a></li>
                </ul>
            </li>
        </ul>
        <ul class="nav navbar-nav navbar-right">
            <li uib-dropdown on-toggle="toggled(open)">
                <a href id="simple-dropdown" class="nav-text" uib-dropdown-toggle>Signed in as John Doe <span class="caret"></span></a>
                <ul class="dropdown-menu" uib-dropdown-menu aria-labelledby="simple-dropdown">
                    <li><a href="#">Profile</a></li>
                    <li role="separator" class="divider"></li>
                    <li><a href="#">Sign Out</a></li>
                </ul>
            </li>
        </ul>
    </div>
</nav>

Ответ 3

Против последней версии ui.bootstrap, 0.12.1, я думаю, что это должно быть комбинационное решение для Dropdown и Collapse of ui.bootstrap:

  • для раскрывающегося меню, он использует "выпадающий список" в внешнем элементе и "выпадающий список" во внутреннем элементе, чтобы вызвать действие выпадающего меню;

    <div class="btn-group" dropdown is-open="status.isopen">
      <button type="button" class="btn btn-primary dropdown-toggle" dropdown-toggle ng-disabled="disabled">
        Button dropdown <span class="caret"></span>
      </button>
      <ul class="dropdown-menu" role="menu">
        <li><a href="#">Action</a></li>
        <li><a href="#">Another action</a></li>
        <li><a href="#">Something else here</a></li>
        <li class="divider"></li>
        <li><a href="#">Separated link</a></li>
      </ul>
    </div>
    
  • для кнопки смены навигационной панели, в оперативном режиме, необходимо добавить директиву "Свернуть" в кнопке переключения на навигаторе и на панели навигации.

    <div ng-controller="CollapseDemoCtrl">
        <button class="btn btn-default" ng-click="isCollapsed = !isCollapsed">Toggle collapse</button>
        <hr>
        <div collapse="isCollapsed">
            <div class="well well-lg">Some content</div> 
        </div>
    </div>
    

для реализации, обратитесь к: My Plunker