按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();
}
}
}
}