v-show失效&&element时间选择器弹框位置

本文探讨了Vue中v-if与v-show指令在时间选择器显示控制上的区别。v-if根据条件渲染或销毁元素及其绑定,而v-show仅切换元素的display属性。通过实例说明了两者在DOM渲染阶段的影响,以及如何结合使用解决实际问题。
摘要由CSDN通过智能技术生成

问题

在这里插入图片描述
在这里插入图片描述

  • 两个都用v-if控制显示隐藏,时间选择器弹框位置在左上角
  • 用v-show控制,时间选择器弹框位置正确,但第二个v-show失效

原因分析

  • v-show不能对多个元素生效!?

  • 全部使用v-if,一开始第二个的dom没有渲染,所以选择器弹框找不到定位点,于是相对浏览器窗口定位

  • v-if:根据表达式的值的 truthiness 来有条件地渲染元素。在切换时元素及它的数据绑定 / 组件被销毁并重建。

  • v-show:根据表达式之真假值,切换元素的 display CSS property。

解决

  • 一个使用v-show另一个使用v-if解决这两个问题
<el-radio-group v-model="dim_radio" size="small">
    <el-radio-button label=""></el-radio-button>
    <el-radio-button label="区间"></el-radio-button>
</el-radio-group>
<el-date-picker
    v-show="dim_radio===''"
    v-model="sel_mon"
    type="month"
    size="small"
    placeholder="选择月">
</el-date-picker>
<el-date-picker
    v-if="dim_radio!==''"
    v-model="sel_mon_range"
    type="monthrange"
    size="small"
    range-separator=""
    start-placeholder="开始月份"
    end-placeholder="结束月份">
</el-date-picker>

补充

  • 后续查到更多的资料将会完善这个问题的分析
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值