我在很多方面遇到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。
答案 0 :(得分:68)
您应该使用ui-bootstrap指令替换bootstrap native js属性(请注意ng-click
和collapse
):
<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"
希望这有助于任何人遇到同样的问题。