带有 Bootstrap 3 导航栏的 AngularJS 不会在小型设备和哈希标记链接上崩溃

标签 angularjs twitter-bootstrap

因此,当尝试我正在电话上工作的项目时,问题就出现了,我的 navbar 中的链接因为它是 AngularJS,所以都带有井号标签链接 (#)... 现在我确实找到了一种让它在 jQuery 中完美工作的方法

$('.nav li a').not('.dropdown-toggle').on('click', function(){
    $('.navbar-ex1-collapse').removeClass('in').addClass('collapse');
});

但是因为他们总是说停止使用普通的 jQuery 或 DOM 操作......所以我应该怎么做呢?我是 AngularJS 的新手,我不擅长开始创建自己的指令,还是应该只使用 $watch?但是那我怎么能看到某个类被点击呢?我试着做这个例子twitter-boostrap-navbar-with-angular-js-collapse-not-functioning但它是专门为 Bootstrap 2.3 制作的,并且一些属性也发生了变化,所以我有点困惑。我可以离开 jQuery,但你知道......我正在努力学习正确的做法...... :)

哦,如果有帮助,我的navbar Bootstrap 3 菜单看起来像这样
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
    <div class="container">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
        </div>

      <!-- Collect the nav links, forms, and other content for toggling -->
      <div class="collapse navbar-collapse navbar-ex1-collapse">
        <ul class="nav navbar-nav">
            <li class="dropdown">
                <a href="#" class="dropdown-toggle" data-toggle="dropdown">Portfolio<b class="caret"></b></a>
                <ul class="dropdown-menu">
                    <li><a href="#/new">Add</a></li>
                    <li><a href="#/undo">Undo</a></li>
                    <li><a href="#/list">List</a></li>
                </ul>
            </li> 
        </ul>
      </div><!-- /.navbar-collapse -->
    </div><!-- /.container -->
</nav>

最佳答案

可能有点晚了,但这是我在您引用的问题中给出的答案的 Bootstrap 3.x 版本 - http://jsfiddle.net/N99dQ/

这一次,我使用了 ng-init 而不是 Controller ,但两种方式都可以。另外值得一提的是,如果你不使用下拉菜单,你只需要包含 ['ui.bootstrap.collapse']

HTML:

<nav id="navbar-example" class="navbar navbar-inverse navbar-static" role="navigation">
  <div class="container-fluid">
    <div class="navbar-header">
      <button class="navbar-toggle" type="button" ng-init="isCollapsed = true" ng-click="isCollapsed = !isCollapsed">
        <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="#">Project Name</a>
    </div>
    <div collapse="isCollapsed" class="navbar-collapse bs-js-navbar-collapse">
      <ul class="nav navbar-nav">
        <li class="dropdown">
          <a id="drop1" href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
          <ul class="dropdown-menu" role="menu" aria-labelledby="drop1">
            <li role="presentation"><a role="menuitem" tabindex="-1" href="http://twitter.com/fat">Action</a></li>
            <li role="presentation"><a role="menuitem" tabindex="-1" href="http://twitter.com/fat">Another action</a></li>
            <li role="presentation"><a role="menuitem" tabindex="-1" href="http://twitter.com/fat">Something else here</a></li>
            <li role="presentation" class="divider"></li>
            <li role="presentation"><a role="menuitem" tabindex="-1" href="http://twitter.com/fat">Separated link</a></li>
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" id="drop2" role="button" class="dropdown-toggle" data-toggle="dropdown">Dropdown 2 <b class="caret"></b></a>
          <ul class="dropdown-menu" role="menu" aria-labelledby="drop2">
            <li role="presentation"><a role="menuitem" tabindex="-1" href="http://twitter.com/fat">Action</a></li>
            <li role="presentation"><a role="menuitem" tabindex="-1" href="http://twitter.com/fat">Another action</a></li>
            <li role="presentation"><a role="menuitem" tabindex="-1" href="http://twitter.com/fat">Something else here</a></li>
            <li role="presentation" class="divider"></li>
            <li role="presentation"><a role="menuitem" tabindex="-1" href="http://twitter.com/fat">Separated link</a></li>
          </ul>
        </li>
      </ul>
      <ul class="nav navbar-nav navbar-right">
        <li id="fat-menu" class="dropdown">
          <a href="#" id="drop3" role="button" class="dropdown-toggle" data-toggle="dropdown">Dropdown 3 <b class="caret"></b></a>
          <ul class="dropdown-menu" role="menu" aria-labelledby="drop3">
            <li role="presentation"><a role="menuitem" tabindex="-1" href="http://twitter.com/fat">Action</a></li>
            <li role="presentation"><a role="menuitem" tabindex="-1" href="http://twitter.com/fat">Another action</a></li>
            <li role="presentation"><a role="menuitem" tabindex="-1" href="http://twitter.com/fat">Something else here</a></li>
            <li role="presentation" class="divider"></li>
            <li role="presentation"><a role="menuitem" tabindex="-1" href="http://twitter.com/fat">Separated link</a></li>
          </ul>
        </li>
      </ul>
    </div><!-- /.nav-collapse -->
  </div><!-- /.container-fluid -->
</nav>

Javascript:
var myApp = angular.module('myApp', ['ui.bootstrap']);

关于带有 Bootstrap 3 导航栏的 AngularJS 不会在小型设备和哈希标记链接上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20755984/

相关文章:

twitter-bootstrap - 仅在 Bootstrap 导航栏折叠时显示链接文本

css - 如何在 Rails View 中加载超棒的字体图标?

angularjs - 将 ngTrueValue 和 ngFalseValue 设置为数字

javascript - AngularJS - 在选择的 ngOptions 上设置背景颜色

javascript - 如何在 AngularJS/Bootstrap 中将变量传递给数据目标 data-toggle

javascript - 使用 angularjs 初始化 zurb Foundation 的工具提示

css - Bootstrap Font Awesome Social Buttons 不起作用

javascript - 如何使用 Angular 通过 ajax 在 Rails 4 API 中登录用户

css - Bootstrap 2.3 CSS Responsive 左边有一个空白在右边

javascript - Twitter Bootstrap 3 下拉菜单不起作用