在各个子页面中的想要监听手机物理返回键进行指定路由跳转,而不是通过history进行一步步跳转,通过在每个子页面的生命周期mounted上挂载监听方法mounted () { this.addPopState();},methods: { addPopState() { window.addEventListener('popstate',function(){})//popstate事件监听物理返回按键 }}但是出现的问题是,在多个页面中绑定了相同的事件,导致被覆盖掉了,求问有什么好的解决方法?跪谢各位了!!!
3 回答
婷婷同学_
TA贡献1844条经验 获得超8个赞
addEventListener可以多次绑定并不会覆盖上一个事件啊,是否是其他地方影响到了?
像这种事件监听我的做法是在根组件监听然后用$on $emit分发事件
根组件监听并分发
window.addEventListener('popstate', () => {
this.$root.$emit('popstate')
})
各级子组件的任意位置监听
this.$root.$on('popstate', () => {
})
慕虎7371278
TA贡献1802条经验 获得超4个赞
难了几天的bug解决了,原因在与混合开发用到cordova原生的按钮,导致在页面触发物理返回键的时候同时也触发了原生的返回键,解决方法就是将原生的返回按钮功能取消,有前端页面进行物理返回键的事件绑定,因此触发返回键的结果就恢复正常了。
document.addEventListener("backbutton", onBackKeyDown, false);
function onBackKeyDown() {
// Handle the back button
}
添加回答
举报
0/150
提交
取消