Angular UI,Bootstrap Navbar Collapse和Javascript

时间:2014-05-23 16:44:50

标签: angularjs twitter-bootstrap 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>

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

问题是当我将其插入UI-Router视图时。折叠动作不再有效 - 我猜是因为“数据目标”功能无法找到目标。

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

以下答案很好。这是参考网址Twitter Bootstrap Navbar with AngularJS - Collapse Not Functioning

2 个答案:

答案 0 :(得分: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>

在控制器中设置初始值:

$scope.navbarCollapsed = true;

修改

ui-bootstrap prefix all compontents的新版本。相应地调整代码,例如。 collapse - &gt; uib-collapse

答案 1 :(得分:2)

我的具体问题围绕着范围。我正在使用ng-repeat循环浏览菜单项,因此navbarCollapsed子范围内无法访问ng-repeat

解决方案是访问父范围的变量。简单如下:

ng-click="$parent.navbarCollapsed = !$parent.navbarCollapsed"

希望这有助于任何人遇到同样的问题。