为了账号安全,请及时绑定邮箱和手机立即绑定

用angularjs 模拟的ul li下拉框怎么实现点击空白处消失?

用angularjs 模拟的ul li下拉框怎么实现点击空白处消失?

尚方宝剑之说 2018-09-11 17:06:41
试过了好多办法都没有实现,求助
查看完整描述

1 回答

?
森栏

TA贡献1810条经验 获得超5个赞

我使用的trick是,利用冒泡达到点击菜单外部关闭菜单的目的:

var demo = angular.module('demo', []);


demo.directive('menu', function(){


    return {

        restrict: 'E',

        scope: {},

        link: function(scope, element, attrs) {

            scope.displayMenu = false;

            

            scope.showMenu = function(e) {

                scope.displayMenu = true;

                e.stopPropagation();

            };

            

            scope.clickInner = function(e) {

                e.stopPropagation();

            };

            

            document.addEventListener('click', function(){

                scope.displayMenu = false;

                scope.$apply();

            }, false);

            

        },

        template: '<button class="showBtn" ng-click="showMenu($event)">显示菜单</button>' +

                  '<div class="menu" ng-class="{show: displayMenu}" ng-click="clickInner($event)">' +

                       '<ul>' +

                            '<li>菜单一</li>' +

                            '<li>菜单二</li>' +

                            '<li>菜单三</li>' +

                      '</ul>' +

                  '</div>'

    };

});

在线例子: jsfiddle


查看完整回答
反对 回复 2018-10-16
  • 1 回答
  • 0 关注
  • 1081 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信