前提条件:
view-design 4.3.2
在vue项目中使用iview组件库的Modal组件。
步骤:
点击A页面某元素,弹出Modal,随即点击弹框确定按钮,跳往B页面,会发现B页面无法滚动
原因:
iview Modal组件可以配置scrollable,默认是false。
该属性是为了控制当弹框出现时,底部页面是否可以滚动。
当scrollable为false,弹框弹出时会给body上加了overflow: hidden样式,阻止页面滚动。当我们Modal消失后,就会去掉该样式。
可是当我们设置modal的visible为false后,立即跳往下一个页面,并不会去掉overflow: hidden样式,导致了页面无法滚动。
解决办法:
- 将scrollable设为true。弊端是弹框出现的时候,底部页面也可以滚动。
- 隐藏modal后,在$nextTick()里做跳转页面逻辑,这样就等到下一次dom更新完成后执行
this.visible = false;
this.$nextTick(() => {
this.$router.push({ name: "example-modal2" });
});