vue3的v-model在组件上几种用法

devtools/2024/10/18 18:28:08/

文章目录

      • 父组件
      • 1、@update和 : 拆开使用
      • 2、computed 计算属性方法
      • 3、defineModel (3.4+) 官方推荐
      • 4、TS泛型用法(3.3+)

父组件

<template><div><button @click="dialogVisible = !dialogVisible">打开/关闭</button><ModalComp v-model="dialogVisible" v-if="dialogVisible" /></div>
</template><script setup>
import ModalComp from './components/ModalComp.vue'const dialogVisible = ref(false)</script>

1、@update和 : 拆开使用

<template><el-dialog:modelValue="modelValue"@update:modelValue="$emit('update:modelValue', false)"title="Tips"width="800"draggable>哈咯啊</el-dialog>
</template><script setup>defineProps({modelValue: {type: Boolean,default: false}
})</script>

2、computed 计算属性方法

<template><el-dialogv-model="dialogVisible"title="Tips"width="800"draggable>哈咯啊</el-dialog>
</template><script setup>const props = defineProps({modelValue: {type: Boolean,default: false}
})
const emit = defineEmits(['update:modelValue'])const dialogVisible = computed({get: () => props.modelValue,set: (val) => emit('update:modelValue', val)
})</script>

3、defineModel (3.4+) 官方推荐

<template><el-dialogv-model="dialogVisible"title="Tips"width="800"draggable>哈咯啊</el-dialog>
</template><script setup>const dialogVisible = defineModel({ // 第一个参数'dialogVisible', 可选type: Boolean,required: true,default: false,
})</script>// 在vite.config.ts中配置 defineModel:true
export default defineConfig({plugins: [vue({script:{defineModel: true}}),vueJsx(),],
})

4、TS泛型用法(3.3+)

<script setup>const emit = defineEmits<{"update:modelValue":[value:boolean]
}>()//用法: emit('update:modelValue', val)
// 在v-model:count(指定字段)时,好用。</script>

http://www.ppmy.cn/devtools/26629.html

相关文章

探索潜力:中心化交易所平台币的对比分析

核心观点 平台币在过去一年里表现差异显著&#xff1a; 在过去的一年里&#xff0c;只有少数几个平台币如BMX、BGB和MX的涨幅超过了100%。相比之下&#xff0c;由于市值较高&#xff0c;BNB和OKB的涨幅相对较低。 回购和销毁机制在平台币价值中起决定性作用&#xff1a; 像M…

solidity(15)

Solidity 中的控制流结构非常类似于其他编程语言,它允许开发者根据条件执行代码段。控制流对于任何能够运行更加复杂逻辑的智能合约系统至关重要。以下是 Solidity 主要的控制流结构: 🔄 if-else 控制结构: 💡 Copy code // 判断数字是否为0的示例函数 function ifEls…

展会资讯 | 现场精彩回顾 阿尔泰科技参展2024第23届中国国际(西部)光电产业!

2024第23届中国国际&#xff08;西部&#xff09;光电产业博览会&#xff0c;在成都世纪城新国际会展中心圆满落幕&#xff01;来自各地的光电领域设备及材料厂商汇聚一堂&#xff0c;展示前沿技术及创新成果。 展会现场&#xff0c;来自全国各地的500余家企业就精密光学、信息…

JS设置Ajax为同步或异步

在使用 AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;时&#xff0c;可以通过设置 XMLHttpRequest 对象的 async 属性来控制请求是同步&#xff08;synchronous&#xff09;还是异步&#xff08;asynchronous&#xff09;。 异步&#xff08;Asynchronous&…

npm install digital envelope routines::unsupported解决方法

目录 一、问题描述二、问题原因三、解决方法 一、问题描述 执行命令 npm install 报错&#xff1a;digital envelope routines::unsupported 二、问题原因 Node.js 17 版本引入了 OpenSSL 3.0&#xff0c;它在算法和密钥大小方面实施了更为严格的限制。这一变化导致 npm 的升…

店匠科技技术产品闪耀,引领新质生产力发展

在科技飞速发展的今天,新质生产力正成为推动社会进步和经济高质量发展的核心力量。店匠科技,作为一家致力于为全球B2C电商提供产品和技术解决方案的领先企业,其技术产品不仅体现了新质生产力的创新特质,更在推动电商行业转型升级中发挥了重要作用。 新质生产力,以创新为主导,摆…

计算机视觉(CV)简介

计算机视觉&#xff08;CV&#xff09;技术是一种在计算机中模拟人类视觉和图像处理能力的技术。它可以从图像和视频中提取有用的信息&#xff0c;并进行分析和理解。以下是计算机视觉技术的优势和挑战的一些例子&#xff1a; 优势&#xff1a; 高效处理大量图像数据&#xff…

CSS 文字超出显示滚动条

1、布局结构 <view class"tes" style"margin-top: 15rpx;"><p v-html"conten" class"conten"></p> </view> conten 里是内容 2、页面样式 .tes::-webkit-scrollbar-track-piece {background-color: rgba(…