vue3使用Element-Plus框架Dialog v-model绑定问题解答

Element-Plus框架Dialog v-model绑定,报错

官方 el-dialog 弹出框绑定方式
请添加图片描述

看下图:可以看到,在el-dialog使用的 v-model直接报错

请添加图片描述

可以看到官方列出两种绑定方式,我们尝试model-value试一下

请添加图片描述

当我们使用 model-value 进行绑定时,控制台会有警告,这里按照它的意思使用 modelValue进行绑定,再次尝试
报错翻译:modelValue 道具检验失败,期望值是Boolean值,而得到的值为 popShow 字符串

请添加图片描述

如下是,Dialog单独抽离出来的vue3组件

当我们尝试强制类型转换时,控制台输出还是需要转换
modelValue=“ishow”
警告如上图控制台

请添加图片描述

父组件引入 Dialog抽离出来的文件

这里使用ref定义popShow为false,也就是隐藏,在子组件传递:popShow,子组件通过接收popShow值,进行展示隐藏

请添加图片描述

请添加图片描述

解决方案

如图下所示,改变为这种 绑定方式 ,问题解决,控制台也没有警告了
modelValue需要绑定一下

请添加图片描述
请添加图片描述

请添加图片描述

原理

modeValue绑定是一个普通的字符串,而vue中的绑定机制,是将绑定的值,作为js表达式去执行。
例如 < img src=“url” > 这样只是一个普通路径,页面解析src里面也是url,而使用 :src绑定到的url,是一个动态的js值

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Vue 3中,使用Element Plus弹出框组件的方法和Vue 2类似,只是在使用v-model时需要使用Vue 3的新语法。要实现已读功能,可以在弹出框的内容中加入一个“已读”按钮,当用户点击该按钮时,通过Vue的数据绑定,可以将该按钮的状态绑定到一个Boolean类型的数据上,例如isRead。然后在弹出框的确认按钮上添加一个@click事件,当用户点击确认时,通过该事件触发将isRead设置为true,表示该弹出框已经被用户已读。示例代码如下: ```html <el-dialog v-model:visible="dialogVisible"> <div> <p>这是一条重要信息</p> <el-button v-if="!isRead" @click="isRead = true">已读</el-button> </div> <div slot="footer"> <el-button @click="dialogVisible = false">取消</el-button> <el-button type="primary" @click="confirm">确认</el-button> </div> </el-dialog> ``` ```js import { ref } from 'vue'; export default { setup() { const dialogVisible = ref(true); const isRead = ref(false); const confirm = () => { isRead.value = true; dialogVisible.value = false; } return { dialogVisible, isRead, confirm } } } ``` 在Vue3中,使用ref()函数创建响应式数据,使用setup()函数来组织组件的逻辑代码,将数据和方法返回给模板使用。在模板中使用v-model:visible来绑定弹出框的显示和隐藏状态。在确认按钮的@click事件中,使用Vue 3的新语法,将confirm方法绑定到组件的setup()函数中,这样可以避免了Vue 2中this指向的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姜香小白鱼

如今生活困难,望支持一下,感谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值