iview弹框后跳转页面,页面无法滚动

963 阅读1分钟
前提条件:

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" });
});