首页 > 其他分享 >v-model 的使用

v-model 的使用

时间:2023-03-25 20:47:44浏览次数:40  
标签:vue const 使用 import model ref checkedNames

1. v-model 的基本使用

1.1 v-model 是一个语法糖

<template>
  <input :value="text" @input="event => text = event.target.value" />
  <input v-model="text" /> <!-- 这一行的意思和上一行是一样的 -->
</template>
<script setup>
import { ref } from 'vue'
const text = ref('')
</script>

1.2 checkbox 复选框的使用

<template>
  <div>Checked names: {{ checkedNames }}</div>

  <input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
  <label for="jack">Jack</label>

  <input type="checkbox" id="john" value="John" v-model="checkedNames">
  <label for="john">John</label>

  <input type="checkbox" id="mike" value="Mike" v-model="checkedNames">
  <label for="mike">Mike</label>
</template>
<script setup>
import { ref } from 'vue'
const checkedNames = ref([])
</script>

注意这里的 checkedNames 只能是数组, 相应的结果就是选中的 input 所对应的 value 所构成的数组. 如果是其他类型, 则会被转换为 true/false

1.3 radio 单选框的使用

<template>
  <div>Checked names: {{ checkedNames }}</div>

  <input type="radio" id="jack" value="Jack" v-model="checkedNames">
  <label for="jack">Jack</label>

  <input type="radio" id="john" value="John" v-model="checkedNames">
  <label for="john">John</label>

  <input type="radio" id="mike" value="Mike" v-model="checkedNames">
  <label for="mike">Mike</label>
</template>
<script setup>
import { ref } from 'vue'
const checkedNames = ref('')
</script>

这里的 checkNames 为空字符串, 相应的结果就是选中的 input 所对应的 value, 如果 checkNames 对应的是其他的类型, 其结果也是一样的

1.4 select 选择器的使用

<script setup>
import { ref } from 'vue'

const selected = ref('')
</script>

<template>
  <span> Selected: {{ selected }}</span>

  <select v-model="selected">
    <option disabled value="">Please select one</option>
    <option>A</option>
    <option>B</option>
    <option>C</option>
  </select>
</template>

selected 赋予 <option disabled value="">Please select one</option> 相同的值可以使得 <select> 在初始的时候默认显示这个不会被选中的 <option>

1.5 修饰符

  • .lazy : 一般情况下, v-model 会在 input 事件触发后更新数据, 而在使用 v-model.lazy="value" 后, 其会在 change 事件触发后再更新(change 事件触发的前提是失去焦点)
  • .number : 用户的输入会自动转换为 number 类型
  • .trim : 去除开始和结束两边的空格

2. 对组件使用 v-model

2.1 父子组件间的传值

<!-- 父组件 -->
<template>
  <CustomInput v-model="componentText" />
  <!-- 等价于下面这行代码 -->
  <CustomInput
    :modelValue="componentText"
    @update:modelValue="(newValue) => (componentText = newValue)"
  />

  <CustomInput v-model:mv="componentText" />
  <!-- 可以通过参数指定传递给子组件的变量名 -->
  <CustomInput 
    :mv="componentText" 
    @update:mv="(newValue) => (componentText = newValue)"
  />
</template>

<script lang="ts" setup>
import CustomInput from './CustomInput.vue'
import { ref } from 'vue'
const componentText = ref('')
</script>
<!-- 子组件 -->
<template>
  <input :value="modelValue" @input="handleUpdate" />
</template>

<script lang="ts" setup>
defineProps(['modelValue'])

// 定义 update:modelValue 事件
const emit = defineEmits(['update:modelValue'])

const handleUpdate = (event: Event) => {
  emit('update:modelValue',(event.target as HTMLInputElement).value)
}
</script>

currentTargettarget 的区别

  • currentTarget : 指向的是所绑定事件的元素
  • target : 指向的是触发事件的元素

标签:vue,const,使用,import,model,ref,checkedNames
From: https://www.cnblogs.com/suzukaze/p/v-model.html

相关文章

  • 掌握这5款 Edge插件,让你的浏览器使用更高效!
    您好,今天我想向您推荐两款不常用的Edge插件,它们可以帮助您更高效地浏览网页和管理标签页。这些插件可能不像一些常见的插件那样广为人知,但它们的功能却非常实用。IHome......
  • Python程序使用代理
    包括jupyter以内的python程序使用代理添加一下代码:#导入模块importos#设置代理proxy='http://127.0.0.1:1080'#代理地址os.environ['http_proxy']=proxyos......
  • 如何使用Photino创建Blazor项目进行跨平台
    Photino是什么Photino是一组使用Web(HTML/CSS/JavaScript)UI创建桌面应用程序的技术。TryPhotino.io维护.NET构建,并鼓励社区开发Photino.Native控件以用于其他语言和......
  • 使用 Docker 打包 Java 应用程序为镜像
    创建Dockerfile在Docker中,Dockerfile是一个文本文件,包含一系列的指令,用于定义如何构建Docker镜像。可以通过编写Dockerfile来自定义Docker镜像。对于Java应用......
  • 上位机学习记录(8) 编写上位机报警功能(使用SeeSharp开源控件)
    上位机学习记录(8)编写上位机报警功能(使用SeeSharp开源控件)第一步:安装SeeSharp在Nuget中搜索SeeSharp。第二步:程序设计大致样式如下:简要说明:一个固定文本框显示:系......
  • CountDownLatch的实际中的使用
    接口太慢,其中一种方式就是使用多线程进行快速处理。介绍下,如何在项目中写代码的。 这里在for循环里使用调用,不是好方式,碍于接口只支持单个节点的查询。......
  • 使用css绘制聊天气泡
    实现原理:给聊天区域的边框补充一个三角形1:左三角聊天气泡.left-box{max-width:540rpx;min-height:80rpx;border-radius:10rpx;border:2rpxsolid#D7......
  • flask使用jwt
    importdatetimeimportjwtfromflaskimportcurrent_appclassAuth:def__init__(self,user_id,expires):self.id=user_idself.expires......
  • Kafka快速使用与详解
    一、Kafka简介1.概念 Kafka是一个分布式的、基于发布/订阅的消息队列,最初由LinkedIn开发,并于2011年成为Apache项目的一部分。Kafka具有高吞吐量、可扩展性、持久性和容......
  • ADB使用说明
    安卓日志相关:adblogcat->C:\Users\1\Desktop\pkqlog\pkq.txt该指令的含义是将app运行的日志存储到C:\Users\1\Desktop\pkqlog\pkq.txt当中需要先建立好文件夹,如果......