实现一个使用 ng-show 来显示或隐藏菜单的简单下拉指令在 AngularJS 中是微不足道的。如果用户在打开菜单后单击屏幕中的其他位置,我也想关闭菜单。最简单的正确方法是什么?之后我尝试使用 $document.bind 和 $document.unbind 从文档中取消绑定,但它似乎没有按预期工作,并且由于范围界定问题,我无法工作应该如何工作。
我知道 ui-bootstrap 有一个类似的指令(dropdownToggle),我已经挖掘了它的源代码,但它看起来要复杂得多,并且引入了对旧版本的 bootstrap 的依赖。
这是一个示例 plunker(在其他地方单击时不会关闭菜单)。
代码:
<!DOCTYPE html>
<html ng-app="plunker" >
<head>
<link data-require="bootstrap-css@3.0.0" data-semver="3.0.0" rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" />
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.js"></script>
<script src="example.js"></script>
<link href="///netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
<div ng-app="dropdown">
<div menu-status-widget></div>
</div>
</body>
</html>