当前位置: 首页 > article >正文

v-model(Vue3)

v-model 是 Vue 的一个语法糖。在 Vue3 中的玩法就更多了

7-1 单个v-model绑定

<template>
  <Child v-model="message" />
</template>
<script setup>
  import Child from './child.vue';
  const message = ref('父传给子');
</script>
子组件:
<template>
  <div>
    <button @click="handleClick">修改model</button>
    {{ modelValue }}
  </div>
</template>
<script setup>
  // 接收
  defineProps([
    'modelValue', // 接收父组件使用 v-model 传进来的值,必须用 modelValue 这个名字来接收
  ]);
  const emit = defineEmits(['update:modelValue']); // 必须用 update:modelValue 这个名字来通知父组件修改值
  function handleClick() {
    // 参数1:通知父组件修改值的方法名
    // 参数2:要修改的值
    emit('update:modelValue', '子改变值');
  }
</script>
 

7-2 多个v-model绑定

<template>
  <Child v-model:msg1="message1" v-model:msg2="message2" />
</template>
<script setup>
  import Child from './child.vue';
  const message1 = ref('水果1');
  const message2 = ref('水果2');
</script>
子组件:
<template>
  <div>
    <div><button @click="changeMsg1">修改msg1</button> {{ msg1 }}</div>
    <div><button @click="changeMsg2">修改msg2</button> {{ msg2 }}</div>
  </div>
</template>
<script setup>
  // 接收
  defineProps({
    msg1: String,
    msg2: String,
  });
  const emit = defineEmits(['update:msg1', 'update:msg2']);
  function changeMsg1() {
    emit('update:msg1', '蔬菜1');
  }
  function changeMsg2() {
    emit('update:msg2', '蔬菜2');
  }
</script>

7-3 v-model修饰符

v-model 还能通过 . 的方式传入修饰。v-model 有内置修饰符——.trim、.number 和 .lazy。但是,在某些情况下,你可能还需要添加自己的自定义修饰符。

<template>
  <Child v-model.uppercasefn="message" />
</template>
<script setup>
  import Child from './child.vue';
  const message = ref('水果');
</script>
子组件:
<template>
  <div>
    <div>{{ modelValue }}</div>
  </div>
</template>
<script setup>
  const props = defineProps(['modelValue', 'modelModifiers']);
  const emit = defineEmits(['update:modelValue']);
  onMounted(() => {
    console.log(props.modelModifiers, '自定义v-model 修饰符');
    // 判断有没有uppercasefn修饰符,有的话就执行 下面得方法 方法
    if (props.modelModifiers.uppercasefn) {
      emit('update:modelValue', '蔬菜');
    }
  });
</script>
 

参考:

vue3的组件通信&v-model使用实例详解_vue.js_脚本之家


http://www.kler.cn/a/445286.html

相关文章:

  • 武汉市电子信息与通信工程职称公示了
  • 8K+Red+Raw+ProRes422分享5个影视级视频素材网站
  • MySQL中EXPLAIN详细讲解
  • 关于数据流图绘制和使用上的一些个人经验
  • 功能篇:JAVA8实现数据去重
  • tryhackme-Pre Security-HTTP in Detail(HTTP的详细内容)
  • RK3588平台上YOLOv8模型转换与CentOS 7.8 Docker镜像拉取超时问题解决指南
  • TDengine 新功能 从 CSV 批量创建子表
  • Ubuntu22.04上安装esp-idf
  • Scalable Io-NIO实践
  • 使用 DeepSpeed 微调 OPT 基础语言模型
  • 【新版】阿里云ACP大数据工程师模拟试题(含答案解析)
  • wepack的各个版本差异?
  • 生产环境kafka升级过程
  • RadiAnt DICOM - 基本主题 :从 PACS 服务器打开研究
  • 彻底理解如何优化接口性能
  • 【Python】Selenium模拟滚动鼠标,向下拖动下拉按钮,直至网页页面向下滑的方法
  • vue3+vite 引入动画组件库 Inspira UI
  • Python机器学习算法KNN、MLP、NB、LR助力油气钻井大数据提速参数优选及模型构建研究...
  • flask-admin+Flask-WTF 实现实现增删改查
  • HTMLCSS:酷炫的3D开关控件
  • 设计模式详解(十一):模板方法——Template Method
  • 数字化供应链:背景特点
  • <论文>初代GPT长什么样?
  • es-head安装使用以及常见问题
  • Spring框架(1)——IOC(控制权反转)的实现