我正在使用带有角度的bootstrap 3。单击链接时,页面不会重新加载,导致菜单在移动模式下保持打开状态。
单击菜单项时如何自动关闭菜单?
我尝试将data-toggle="collapse" data-target=".navbar-responsive-collapse"
添加到a
标记,但它会在桌面模式下导致奇怪的行为。
答案 0 :(得分:7)
这只是之前回答的更新版本
angular.module('app').directive('navCollapse', function () {
return {
restrict: 'A',
link: function (scope, element, attrs) {
var visible = false;
element.on('show.bs.collapse', function () {
visible = true;
});
element.on("hide.bs.collapse", function () {
visible = false;
});
element.on('click', function(event) {
if (visible && 'auto' == element.css('overflow-y')) {
element.collapse('hide');
}
});
}
};
});
HTML
<div class="collapse navbar-collapse navbar-app-collapse" nav-collapse="">
<ul class="nav navbar-nav">
</ul>
</div>
答案 1 :(得分:4)
这是我最终使用的角度指令。 有几件事需要注意。
我在带有nav类的元素上使用了ic-nav-autoclose指令。
angular.module('incmn')
.directive('icNavAutoclose', function () {
console.log("icNavAutoclose");
return function (scope, elm, attrs) {
var collapsible = $(elm).find(".navbar-collapse");
var visible = false;
collapsible.on("show.bs.collapse", function () {
visible = true;
});
collapsible.on("hide.bs.collapse", function () {
visible = false;
});
$(elm).find("a").each(function (index, element) {
$(element).click(function (e) {
if (visible && "auto" == collapsible.css("overflow-y")) {
collapsible.collapse("hide");
}
});
});
}
});
答案 2 :(得分:2)
我这样做了。
$(selector).click(function () {
//for close, opened dropdown.
if ($("nav").hasClass("in")) {
$('[data-toggle="collapse"]').click();
}
});
答案 3 :(得分:1)
如果您希望导航栏在下次点击后折叠,无论它出现在屏幕上的哪个位置:
让您的.navbar-toggle
按钮仅打开导航:
<div class="navbar-header">
<button class="navbar-toggle" ng-click="collapsed = true">
</div>
使用不可见的全屏参考地址附加.navbar-collapse
,点击后会关闭导航:
.invisible-underlay {
position: fixed;
top: 0;
left: 0;
height: 100%;
width: 100%;
background-color: transparent;
}
<div class="navbar-collapse" collapse="navbarCollapsed" ng-click="navbarCollapsed = true">
<div class="invisible-underlay"></div>
<ul class="nav navbar-nav navbar-right">
<li><a ui-sref="home">Home</a></li>
</ul>
</div>
答案 4 :(得分:0)
此代码适用于导航栏中的下拉子菜单
angular.module('app').directive('navCollapse', function () {
return {
restrict: 'A',
link: function (scope, element, attrs) {
var visible = false;
element.on('show.bs.collapse', function () {
visible = true;
});
element.on("hide.bs.collapse", function () {
visible = false;
});
element.on('click', function (event) {
if (visible && 'auto' == element.css('overflow-y') && $(event.target).attr('data-toggle')!="dropdown") {
element.collapse('hide');
}
});
}
};
});