我有一个菜单项,当点击时弹出一个子菜单。如果我再次点击它,它会关闭。这部分工作正常。我的问题是,如果不使用jQuery,当我单击页面上的任何其他位置时,如何才能使此子菜单关闭?如何在没有jQuery的情况下单击页面上的其他任何地方时关闭子菜单?
下面是用户点击什么的:
<div class="main-nav" ng-click="showDialog()" ng-hide="highlightItem()">
<a class="left" >Foo</a>
</div>
<div class="main-nav focus" ng-click="hideDialog()" ng-show="highlightItem()">
<a class="left" >Foo</a>
</div>
这里是孩子的菜单:
<div id="navDialog" class="main-nav-dialog" ng-show="dialog" ng-click="hideDialog()">
<div>
<a ui-sref="item1" class="left border-bottom">Item 1</a>
</div>
<div>
<a ui-sref="item2" class="left border-bottom">Item 2</a>
</div>
<div>
<a ui-sref="item3" class="left border-bottom"></i>Item 3</a>
</div>
<div>
<a ui-sref="item4" class="left">Item 4</a>
</div>
</div>
这里是什么在我的控制器:
var show = false;
$scope.showDialog = function() {
if (show === false) {
show = true;
$scope.dialog = true;
return show;
}
};
$scope.hideDialog = function() {
if (show === true) {
show = false;
$scope.dialog = false
return show;
}
};
$scope.highlightItem = function() {
return show;
};
你可能想做一个指令,然后使用angular.element来获得父('body')。bind('click',doStuff)。不要忘记范围$ on('$ destroy',unBindMyListeners) – 2014-09-02 15:01:55