按ESC键关闭弹窗的问题

2,558 阅读1分钟

按ESC键关闭弹窗的问题

一开始的思路是为弹窗组件的外层添加keydown事件,可是并没有起作用。翻阅了文档后keydown只适用于input,所以需要尝试别的方法。

解决方法:

  • 在mounted生命周期中绑定事件,在组件销毁时也需要将事件删除
  • 添加了canEscClose参数,可以在父组件控制是否需要该功能
export default{
    props:{
        canEscClose:{
            type:Boolean,
            default:true,
        }  
    },
    mounted(){
        window.addEventListener('keydown',this.clickEscCode);
    },
    destroyed(){
        window.removeEventListener('keydown',this.clickEscCode);
    },
    methods:{
        closeModal(){
            this.$emit('closeModal'); 
        },
        clickEscCode(e){
            if(this.canEscClose && e.keyCode === 27){
                this.closeModal();
            }
        }
    }
}