v-model用于在元素上创建双向数据绑定,负责监听用户输入事件来更新数据。

v-model应用于输入框

<input v-model="searchText" />
// 等价于
<input :value="searchText" @input="searchText = $event.target.value" />

v-model应用于自定义组件

v-mode用在组件上时,类似与用于input输入框

<customComp v-model="searchText" />
// 等价于
<customComp :model-value="searchText" @update:model-value="searchText = $event" />

为了能让组件上的v-model生效,

  1. 需要将这个组件中的某个元素的某个属性绑定到名为modelValue的prop上(从父组件传来的值)
  2. 在该元素的某个事件触发时,将新的值通过自定义的update:modelValue事件抛出。

这里以input元素为例:假设自定义组件中包含一个input元素,代码如下:

// 子组件
app.component('customComp', {
props: ['modelValue'],
emits: ['update:modelValue'],
template:
<input :value="modelValue"
@input="$emit('update:modelValue', $event.target.value)">
})
// 父组件
<customComp v-model="searchText" />

这样 组件上的v-model指令就能生效。原理还是通过数据绑定和事件触发,写法直接可以在组件中使用v-model指令,但组件内要写出相关传值与事件触发代码。

其他示例:

父组件:

<bindMapComp v-model="childrenDrawer" />

子组件:这里绑定的是 ant-design 中 a-drawer元素的visble属性

<template>
<a-drawer
title=""
placement="left"
width="320"
:closable="false"
:visible="modelValue"
@close="onChildrenDrawerClose"
>
测试
</a-drawer>
</template>
<script>
export default {
props: {
modelValue: {
type: Boolean,
},
},
emits: ['update:modelValue'],
setup(_, { emit }) {
const onChildrenDrawerClose = () => {
// 子组件通过emit事件,向父组件传值
emit('update:modelValue', false);
};
return {
onChildrenDrawerClose,
};
},
};
</script>

如不理解可查阅vue官方文档:https://v3.cn.vuejs.org/guide/component-basics.html#%E5%9C%A8%E7%BB%84%E4%BB%B6%E4%B8%8A%E4%BD%BF%E7%94%A8-v-model(vue官方文档写的很好,建议反复阅读,vue的所有知识点官方文档解释讲解的应该是最好的)

vue3在组件上使用v-model的更多相关文章

  1. 组件上使用v-model

    组件上使用v-model <input v-model="searchText"> 等价于 <input v-bind:value="searchTex ...

  2. vue 学习六 在组件上使用v-model

    其实这个部分应该是属于component,为什么把这玩意单独拿出来呢,原因是它这个东西比较涉及到了vue的事件,以及v-model指令的使用,还是比较综合的.所以就拿出来啦 父组件 <templ ...

  3. VUE3 之 组件传参

    1. 概述 韦奇定律告诉我们:大部分人都很容易被别人的话所左右,从而开始动摇.怀疑,最终迷失自我.因此我们要努力的坚定信念,相信自己,才不会被周围的环境所左右,才能取得最终的胜利. 言归正传,之前我们 ...

  4. 使用commons-fileUpload组件上传文件

    在近期的一个项目中有用到commons-fileUpload组件进行实现文件上传的功能(由于没用到框架),在使用的过程中有遇到一些问题,经过自己的琢磨也算顺利地将其解决了,在这里做个记录. 一.com ...

  5. asp 文件上传(ASPUpload组件上传)

    要实现该功能,就要利用一些特制的文件上传组件.文件上传组件网页非常多,这里介绍国际上非常有名的ASPUpload组件 1 下载和安装ASPUpload   要实现该功能,就要利用一些特制的文件上传组件 ...

  6. EasyUI 关于IE使用window组件上传文件

    有时候IE会对使用window组件上传文件(第二次)不生效,解决方案是: 将该window每次打开的时候,使用: $('#adUploadWindow').window('refresh', 'pan ...

  7. 前台利用jcrop做头像选择预览,后台通过django利用Uploadify组件上传图最终使用PIL做图像裁切

    之前一直使用python的PIL自定义裁切图片,今天有需求需要做一个前端的选择预览页面,索性就把这个功能整理一下,分享给大家. 实现思路: 1.前端页面: 用户选择本地一张图片,然后通过鼠标缩放和移动 ...

  8. django Form组件 上传文件

    上传文件 注意:FORM表单提交文件要有一个参数enctype="multipart/form-data" 普通上传: urls: url(r'^f1/',views.f1), u ...

  9. vue里在自定义的组件上定义的事件

    事件分为原生事件和自定义事件. vue里在自定义的组件上定义的事件,都被认为是自定义事件,必须用$emit()来触发. 这也是子组件向父传值的原理. 如果想作为原生事件,需要在原生事件后面加上.nat ...

随机推荐

  1. springboot页面国际化

    引入依赖pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...

  2. 为Visual Studio 2019设置 更改皮肤

    下载主题插件:Color Themes for Visual Studio 安装插件 下载完成后 关闭vs2019 完成初始化,初始化完成后,再次打开软件进行配置. 卸载插件 点击卸载,然后关闭vs2 ...

  3. WeifenLuo.WinFormsUI.Docking 简单入门

      WinForm布局,开源且好用的貌似不多,WeifenLuo.WinFormsUI.Docking 这个是其中之一,这个唯一的不好地方,就是没有文档,只能通过读源码,不过它源码里面也提供了一个例子 ...

  4. python 镜像仓库获取最新版本号

    #/bin/python# -*- coding: utf-8 -*-import requestsfrom urllib import parsefrom requests.auth import ...

  5. Lesson A puma at large

    新概念三 Lesson 1 A puma at large 词汇: 1. spot 易混淆: recognize v. [认出], identify v. [识别sb/sth的身份] v. 看出,发现 ...

  6. iOS 产品新需求,要让collectionView 的背景跟着Cell 一块儿动!!!

    标题如上!看如何解决 最近产品经理来需求了,就像标题上的一样,要求,给collectionView添加一个背景,并且这个背景,还能跟着cell滑动这么一个效果,这个需求把我看懵了,让我不知所措,这该如 ...

  7. LeetCode-082-删除排序链表中的重复元素 II

    删除排序链表中的重复元素 II 题目描述:存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字. 返回同样按升序 ...

  8. Hystrix&Dashboard配置使用

    目录 Hystrix是什么 熔断 什么是熔断 熔断类型 打开 半开 关闭 使用方法 导包 添加启动注解 新增方法 测试 降级 什么是降级 使用方法 导包 修改yml,新增如下 启动类新增注解 @Ena ...

  9. vue+echarts可视化大屏,全国地图下钻,页面自适应

    之前写过一篇关于数据大屏及地图下钻的文章 https://www.cnblogs.com/weijiutao/p/13977011.html ,但是存在诸多问题,如地图边界线及行政区划老旧,无法自适应 ...

  10. 【数据库】优化SQL语言

    第1章数据模型设计 第1条:确保所有表都有主键 [1]当表缺少主键时,会出现各种问题,所有表都必须有一列(或多列)设置为主键. [2]主键应当具备的特征 唯一性,值非空,不可变,尽可能简单 [3]不要 ...