已解决
vue3学习(十一)--- v-model
来自网友在路上 137837提问 提问时间:2023-10-20 00:47:19阅读次数: 37
最佳答案 问答题库378位专家为你答疑解惑
文章目录
- v-model的更新
- 多个 v-model 绑定
- 自定义修饰符
v-model
其实是一个语法糖 通过props
和emit
组合而成的
v-model的更新
vue2和vue3中的v-model是有一些差别的:
- prop:
value
变为modelValue
- 事件:
input
变为update:modelValue
- v-bind 的
.sync
修饰符和组件的model
选项已移除 - 新增 支持
多个v-model
- 新增 支持
自定义修饰符 Modifiers
父组件
<template><button @click="show = !show">开关{{show}}</button><Dialog v-model="show"></Dialog>
</template><script setup lang='ts'>
import Dialog from "./components/Dialog/index.vue";
import {ref} from 'vue'
const show = ref(false)
</script><style>
</style>
子组件
<template><div v-if='propData.modelValue ' class="dialog"><div class="dialog-header"><div>标题</div><div @click="close">x</div></div><div class="dialog-content">内容</div></div>
</template><script setup lang='ts'>type Props = {默认就叫modelValuemodelValue:boolean
}const propData = defineProps<Props>()emit的默认事件名称写法
const emit = defineEmits(['update:modelValue'])const close = () => {emit('update:modelValue',false)
}</script>
多个 v-model 绑定
父组件
<template><button @click="show = !show">开关{{show}} ----- {{title}}</button><Dialog v-model:title='title' v-model="show"></Dialog>
</template><script setup lang='ts'>
import Dialog from "./components/Dialog/index.vue";
import {ref} from 'vue'
const show = ref(false)
const title = ref('我是标题')
</script><style>
</style>
子组件
<template><div v-if='modelValue ' class="dialog"><div class="dialog-header"><div>标题---{{title}}</div><div @click="close">x</div></div><div class="dialog-content">内容</div></div>
</template><script setup lang='ts'>type Props = {modelValue:boolean,title:string
}const propData = defineProps<Props>()const emit = defineEmits(['update:modelValue','update:title'])const close = () => {emit('update:modelValue',false)emit('update:title','我要改变')
}</script>
自定义修饰符
添加到组件 v-model
的修饰符将通过 modelModifiers prop 提供给组件。在下面的示例中,我们创建了一个组件,其中包含默认为空对象的 modelModifiers prop
父组件
<template><button @click="show = !show">开关{{show}} ----- {{title}}</button>这里添加修饰符<Dialog v-model:title.flag='title' v-model="show"></Dialog>
</template><script setup lang='ts'>
import Dialog from "./components/Dialog/index.vue";
import {ref} from 'vue'
const show = ref(false)
const title = ref('我是标题')
</script><style>
</style>
<script setup lang='ts'>type Props = {modelValue: boolean,title?: string,默认写法modelModifiers?: {default: () => {}}用的是修饰符前面的参数 + 'Modifiers'的固定写法titleModifiers?: {default: () => {}}}const propData = defineProps<Props>()console.log(propData.modelModifiers) ===> //{}console.log(propData.titleModifiers) ===> //flag:trueconst emit = defineEmits(['update:modelValue', 'update:title'])const close = () => {console.log(propData.modelModifiers);emit('update:modelValue', false)emit('update:title', '我要改变')
}
查看全文
99%的人还看了
相似问题
- Tekton — 通过tekton-operator部署tekton组件
- vue3中使用全局自定义指令和组件自定义指令
- HarmonyOS ArkTS 基础组件的使用(四)
- 界面控件DevExpress WPF流程图组件,完美复制Visio UI!(一)
- Vue2系列 -- 组件自动化全局注册(require.context)
- 扩散模型实战(十一):剖析Stable Diffusion Pipeline各个组件
- django DRF认证组件示例
- MySQL内部组件与日志详解
- 前端新手Vue3+Vite+Ts+Pinia+Sass项目指北系列文章 —— 第五章 Element-Plus组件库安装和使用
- 修改el-radio-group样式,自定义单选组件
猜你感兴趣
版权申明
本文"vue3学习(十一)--- v-model":http://eshow365.cn/6-19955-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: MySQL高可用架构学习
- 下一篇: 华为OD 跳格子2(200分)【java】B卷