javascript - Angular 切换自定义下拉菜单

标签 javascript angularjs

我有一个自定义下拉选择器。当我单击浏览器上的其他任何位置时,我想切换下拉菜单。 toggleModules() 在下拉列表中工作。

数据:modules=["A", "B", "C", "D", "E", "F"]

<div class="col-xl-3 col-lg-3 col-md-3 col-sm-12">
    <div class="vov-filters ov-filter-region">
        <span ng-click="toggleModules($event)"><label>Module</label>
            <b id="caret-glyph" class="glyphicon glyphicon-chevron-down pull-right" area-hidden="true"></b>
        </span>

        <div id="el1" class="overlay bordered" ng-if="showModules">
            <span role="button" ng-click="clearSelectedModules()" class="clear">Clear</span>
                <div class="filter-checkbox" ng-repeat="entry in modules" ng-click="moduleFilter(entry)">
                    <label>
                        <input ng-show="entry.show" type="checkbox" ng-model="entry.show">
                        <span class="cr"><i class="cr-icon glyphicon glyphicon-ok"></i></span>
                        {{entry.name}}
                    </label>
                </div>
            </div>

        </div>
    </div>

Controller :切换 Fn -

  $scope.toggleModules = function(ev) {
      ev.preventDefault();
      ev.stopPropagation();
      $scope.showModules = !$scope.showModules;
      if ($scope.showModules) {
        $scope.overlay = true;
      } else {
        $scope.overlay = false;
      }
    };

同一 Controller :$document 点击事件:

$document.on('click', function(event) {
  <!-- Start Toggle Module filter -->
  $scope.toggleModules(event)
  <!-- End Toggle Module filter -->
  return $document.off('click', event);
});

最佳答案

谢谢大家。我找到了一个适合我的解决方案。

$document.on('click', function(event) {
    event.preventDefault();
    event.stopPropagation();
    $scope.$apply(function() {
        $scope.showModules = false;
    });
    $document.off('click', event);
});

关于javascript - Angular 切换自定义下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44050966/

相关文章:

asp.net - 您可以通过 Javascript 函数更改 ASP.NET 控件的高度/宽度吗?

javascript - AngularJS 中多个指令的一个声明

javascript - 从数组中删除项目时如何使用angularjs ngForm启用按钮

javascript - 更新 Angular ng-model 中的 HTML 输入值更改

html - CSS/AngularJS 溢出-x

javascript - 使用星号隐藏密码字段

java - 你能从 JavaScript 扩展抽象 Java 类吗?

javascript - 使用 Javascript 根据星期几和一天中的时间显示 HTML 元素

javascript - jQuery 插件未正确定位指令

javascript - ionic - angularjs - 在 Android 设备上重新打开应用程序后列表不呈现