我有一個菜單項,當點擊時彈出一個子菜單。如果我再次點擊它,它會關閉。這部分工作正常。我的問題是,如果不使用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