Angular UI,Bootstrap Navbar Collapse和Javascript

Lea*_*ple 32 twitter-bootstrap angularjs angular-ui angular-ui-router

我在很多方面遇到UI-Router问题.我不明白它是如何与其他框架交互的.

也就是说,我正在尝试实现Bootstrap 3的导航栏折叠模块,如下所示:

<div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
        <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 test</a>
    </div>
    <div class="collapse navbar-collapse">
      <ul class="nav navbar-nav">
        <li class="active"><a href="#">Home</a></li>
        <li><a href="#about">About</a></li>
        <li><a href="#contact">Contact</a></li>
      </ul>
    </div><!--/.nav-collapse -->
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

这是直接来自Bootstrap网站,它在自己的.html页面内工作正常.

问题是当我将其插入UI-Router视图时.折叠动作不再有效 - 我猜是因为"数据目标"功能在某种程度上无法找到目标.

如何在Angular UI中使用Bootstrap 3?Angular UI Bootstrap包没有导航栏模块.

下面的答案是好的.这是一个参考URL Twitter Bootstrap Navbar与AngularJS - 折叠不起作用.

use*_*643 68

您应该使用ui-bootstrap指令替换bootstrap native js属性(注意ng-clickcollapse):

<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-click="navbarCollapsed = !navbarCollapsed">
        <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="#">
        <!-- your branding here -->
      </a>
    </div>

    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" collapse="navbarCollapsed">
      <!-- your normal collapsable content here -->
    </div>
</nav>
Run Code Online (Sandbox Code Playgroud)

在控制器中设置初始值:

$scope.navbarCollapsed = true;
Run Code Online (Sandbox Code Playgroud)

编辑:

新版本的ui-bootstrap为所有组件添加前缀.相应地调整代码,例如.collapse- > uib-collapse.

  • 在元素上设置navbarCollapsed可能更具可读性,而不是在控制器中.您可以将... ng-init ="navbarCollapsed = true"...添加到折叠<按钮>. (14认同)
  • 此外,将`ng-click ="navbarCollapsed =!navbarCollapsed"添加到`<div class ="collapse ...>`中的链接将在选择时自动关闭菜单. (4认同)
  • 实际上ui-router与此无关.如果你还没有,你需要在项目中包含ui-bootstrap.你根本不需要原始twitter bootstrap发行版中的任何js文件 - 它们可以被ui-bootstrap中的纯角度指令替换. (3认同)
  • @GrantLindsay我无法点击我的bootstrap-ui导航栏中的任何链接.我正在使用ui-sref,这可能是为什么?你可以看到我在http://oscil.io上运行的代码 (2认同)
  • 使用最新版本的ui-boostrap(1.1.1),您需要使用'uib-collapse'而不是'collapse'.`<div class ="collapse navbar-collapse"id ="navbar-ex-collapse"uib-collapse ="navbarCollapsed">`参见[ui-bootstap docs](https://angular-ui.github.io/bootstrap /#/坍方). (2认同)