Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ng单击无法正常工作_Javascript_Html_Angularjs - Fatal编程技术网

Javascript ng单击无法正常工作

Javascript ng单击无法正常工作,javascript,html,angularjs,Javascript,Html,Angularjs,我正在添加一个下拉菜单,但有一个错误,我正试图修复。当前,当我单击图标时,下拉列表将起作用。但是,当单击网站的其他按钮或其他区域时,下拉列表将保持打开状态。我希望它关闭。。。在这个项目中有很多代码,所以我采取了创建错误的部分。有什么建议吗 HTML: 可能,您必须使用顶级的“单击”事件侦听器来关闭菜单。此外,您应该停止菜单内的“单击”事件传播。 但是,如果您使用一些现有的库或其他东西,效果会更好。请看下面的答案: 他创建自己的指令,然后在控制器上使用: app.directive('click

我正在添加一个下拉菜单,但有一个错误,我正试图修复。当前,当我单击图标时,下拉列表将起作用。但是,当单击网站的其他按钮或其他区域时,下拉列表将保持打开状态。我希望它关闭。。。在这个项目中有很多代码,所以我采取了创建错误的部分。有什么建议吗

HTML:


可能,您必须使用顶级的“单击”事件侦听器来关闭菜单。此外,您应该停止菜单内的“单击”事件传播。
但是,如果您使用一些现有的库或其他东西,效果会更好。

请看下面的答案:

他创建自己的指令,然后在控制器上使用:

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>


javascript是否在控制器中?您是否在浏览器=>控制台中使用F12(开发人员工具)查看javascript错误的位置?(请记住在打开开发人员工具后刷新页面)尝试以下操作:F12=>Console=>refresh(F5)=>单击DIV=>在控制台中查看任何新的红色?抱歉,脱离主题:您应该学习如何使用开发人员工具。重要的选项卡是html的“元素”和脚本的“源”。花点时间,这绝对值得。很乐意帮忙。有时候学钓鱼总比钓到一条鱼好。
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);
      })
    }
  }
})
<div class="fa fa-ellipsis-v action-icon" ng-class="{'selected': menuActions}" ng-click="dropDownMenu()" click-anywhere-but-here="dropDownMenu()"></div>