2014-07-25 130 views
0

我正在添加一個下拉菜單,但有一個錯誤,我正在嘗試修復。目前,當我點擊該圖標時,下拉菜單將起作用。但是,當點擊其他按鈕或網站的其他區域時,下拉菜單保持打開狀態。我希望它關閉......在這個項目中有很多代碼,所以我採取了創建錯誤的部分。有什麼建議麼?ng-click不能正常工作

HTML:

<div class="fa fa-ellipsis-v action-icon" ng-class="{'selected': menuActions}" ng-click="dropDownMenu()"></div> 

的JavaScript:

// This function handles the ellipsis 
      $scope.dropDownMenu = function() { 
        $scope.myShareFeature = false; 
        $scope.mySignatureFeature = false; 
        $scope.menuActions = !$scope.menuActions; 
+0

是控制器內的JavaScript? –

+0

是的,JavaScript位於控制器內部 – ChaseHardin

+1

您是否在瀏覽器中使用了F12(開發人員工具)=>控制檯來查看Javascript錯誤的位置? (記得打開開發工具後刷新頁面) –

回答

0

也許,你必須使用頂級 'click' 事件監聽器,關閉您的菜單。此外,你應該停止菜單內的'點擊'事件傳播。 但是,如果您使用一些現有的庫或其他庫,它會更好。

1

看看這個答案在這裏:

Click everywhere but here event

他創建了自己的指令 - 然後使用它的控制器上:

app.directive('clickAnywhereButHere', function($document){ 
    return { 
    restrict: 'A', 
    link: function(scope, elem, attr, ctrl) { 
     elem.bind('click', function(e) { 
     // this part keeps it from firing the click on the document. 
     e.stopPropagation(); 
     }); 
     $document.bind('click', function() { 
     // magic here. 
     scope.$apply(attr.clickAnywhereButHere); 
     }) 
    } 
    } 
}) 

HTML

<div class="fa fa-ellipsis-v action-icon" ng-class="{'selected': menuActions}" ng-click="dropDownMenu()" click-anywhere-but-here="dropDownMenu()"></div>