Vue3 v-model的使用

简介        

使用场景:1 用于表单input、textarea以及select元素上创建双向数据绑定

                  2 用于组件间数据的通信

一个小栗子,第一个使用场景的代码

<template><div class="box"><div class="intro"><el-input v-model="inputString" placeholder="Please input"></el-input></div><div class="intro"><div>inputvalue最新的值为 = {{ inputString }}</div></div></div>
</template>
<script setup>
import { watch, ref } from 'vue';const inputString = ref("");
watch(inputString, (newValue, oldValue) => {console.log("inputvalue = ", newValue, "oldValue = ", oldValue);
});</script>
<style lang="less">
.box {display: flex;flex-direction: column;.intro {margin: 15px;padding: 10px;}
}
</style>

        v-model可以与一个ref值联用,当input输入框的输入内容改变时,这个ref值会实时的跟着改变

一个小栗子,第二个是用场景:

自定义一个组件A,在组件A中对el-input进行了封装,自定义组件A的代码如下:

<template><div class="box"><el-input type="text" v-model="inputStr" @input="inputValueChange"></el-input></div>
</template>
<script setup>
/* vue3.4之后这样使用
import { defineModel } from 'vue';
const inputvalue = defineModel('inputvalue');
*/
import { ref } from 'vue';
defineProps({inputvalue: {required: true,default: "A component value"}
})
const emits = defineEmits(['update:inputvalue']);const inputStr = ref("");const inputValueChange = () => {emits('update:inputvalue',  inputStr.value);
}
</script>
<style scoped lang="less">
</style>

 在父组件中使用子组件A,并与父组件中的数据进行绑定,父组件中的代码如下:

<template><div class="box"><div class="intro"><div>自定义组件与父组件间值的双向绑定:{{ aValue }}</div><A v-model:inputvalue="aValue"></A></div></div>
</template>
<script setup>
import { ref } from 'vue';
import A from './components/index.vue';/*也可以用于自定义父子组件间的值的双向绑定
*/
const aValue = ref("super base value");</script>
<style lang="less">
.box {display: flex;flex-direction: column;.intro {margin: 15px;padding: 10px;}
}
</style>

 一个小栗子 ,父组件与子组件之间三个值同时进行双向绑定

创建一个子组件B,代码如下:

<template><div class="intro"><div class="btn" @click="oneEvent">change oneVal</div><div class="btn" @click="twoEvent">change twoVal</div><div class="btn" @click="threeEvent">change threeVal</div></div>
</template>
<script setup>
import { ref } from 'vue';
const props= defineProps({oneVal: {required: true,default: ""},twoVal: {required: false,default: ""},threeVal: {required: false,default: ""}
});
const emits = defineEmits(['update:oneVal', 'update:twoVal', 'update:threeVal']);
let numOne = 0;
let numTwo = 0;
let numThree = 0;
/* 在点击事件中改变三个与父组件双向绑定的值
*/
const oneEvent = () => {numOne = numOne + 2;let val = numOne + '';console.log("val = ", val);emits('update:oneVal', val);
};const twoEvent = () => {numTwo = numTwo + 2;let val = numTwo + '';console.log("val = ", val);emits('update:twoVal', val);
};const threeEvent = () => {numThree = numThree + 2;let val = numThree + '';console.log("val = ", val);emits('update:threeVal', val);
};
</script>
<style lang="less" scoped>
.intro {display: flex;flex-direction: row;margin: 15px;padding: 10px;.btn {margin-right: 150px;margin-left: 75px;background-color: aquamarine;padding: 20px;}
}
</style>

父组件中使用这个自定义组件,并与自定义组件进行三个值的双向绑定:

<template><div class="box"><div class="intro"><B v-model:oneVal="oneVal" v-model:twoVal="twoVal" v-model:threeVal="threeVal"></B></div></div>
</template>
<script setup>
import { ref } from 'vue';
import B from './components/b.vue';const oneVal = ref("父组件初值:oneVal");
const twoVal = ref("父组件初值:twoVal");
const threeVal = ref("父组件初值:threeVal");
</script>
<style lang="less">
.box {display: flex;flex-direction: column;.intro {margin: 15px;padding: 10px;}
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/758968.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】仿函数优先级队列反向迭代器

目录 一、优先级队列 1、priority_queue 的介绍 2、priority_queue 的使用 3、 priority_queue 的模拟实现 1&#xff09;priority_queue()/priority_queue(first, last) 2&#xff09;push&#xff08;x&#xff09; 3&#xff09;pop&#xff08;&#xff09; 4&#…

Vue+Element-UI Table表格实现复选框单选效果(隐藏表头上的全选Checkbox)

实现效果 完整代码 <div class"box-pos"><el-table ref"table" :header-cell-style"{ color: #FFF, background: #333 }":cell-style"{ color: #FFF, background: #333 }" :data"grListData" style"width: 1…

前端知识点03(JS)

文章目录 前端知识点03&#xff08;JS&#xff09;1、JS中this指向问题2、script中的async和defer的区别3、setTimeOut和setInterval4、Es6和ES5的区别5、ES6的新特性 &#x1f389;写在最后 前端知识点03&#xff08;JS&#xff09; hello hello~ &#xff0c;这里是 code袁~&…

python日常刷题(一)

前言&#xff1a;本文记录2024年3月11日至2024年3月19日牛客网所做的基础题目&#xff08;错题本&#xff09;&#xff1a; &#x1f3ac;个人简介&#xff1a;努力学习ing &#x1f4cb;本专栏&#xff1a;python日常刷题 &#x1f380;CSDN主页&#xff1a;愚润求学 文章目录…

软件的安装与卸载(YUM)

YUM&#xff1a;yum 是一个方便的"应用商店"&#xff0c;你可以通过它轻松地安装、更新和删除软件包&#xff0c;就像从应用商店中下载和安装应用程序一样。&#xff08;这个得用root身份&#xff0c;普通用户权限不够&#xff09; 常用命令&#xff1a; 1.安装软件…

路径优化算法 | matlab遗传算法多配送中心路径优化

在MATLAB中使用遗传算法来解决多配送中心路径优化问题,通常涉及到复杂的组合优化问题。多配送中心路径优化问题(也称为车辆路径问题,Vehicle Routing Problem with Multiple Depots, VRPMD)是旅行商问题(TSP)的扩展,其中存在多个配送中心,每个配送中心有一定数量的车辆…

工作需求ElementUi组件的使用

加油&#xff0c;新时代打工人&#xff01; 组件源码 <template><div mouseenter"mousein true" mouseleave"mousein false"><el-input type"text" clearable autocomplete"off" v-model"searchDoc.originName…

7.安全性基础知识

主要议题&#xff1a; 安全防护体系&#xff1a;7层次&#xff0c;要记7层次的名称以及这些层次与哪些方面相关&#xff1b; 安全保护等级&#xff1a;5等级&#xff0c;要记5等级安全性的高低排序&#xff0c;掌握每个等级的特点&#xff1b; 用户认证机制&#xff1a;用户认…

[小程序开发] npm

一、自定义构建npm 1、在project.config.json文件中的 "miniprogramRoot"指定小程序源码目录。 "miniprogramRoot": "miniprogram/", 2、在project.config.json文件中的setting.packNpmManually为true&#xff0c;开启自定义node_modules和minip…

bert源码分析之tokenization

import collections# 集合模块 import re# 正则模块 import unicodedata#判断字符类别模块 import six#判断版本 import tensorflow as tf # 用于检查传入的参数do_lower_case和真正的模型是否一致 # do_lower_case: 一个布尔值&#xff0c;表示是否将文本转换为小写 # init_ch…

python网络爬虫实战教学——urllib的使用(2)

文章目录 专栏导读1、前言2、URLError3、HTTPError4、urlparse5、urlunparse 专栏导读 ✍ 作者简介&#xff1a;i阿极&#xff0c;CSDN 数据分析领域优质创作者&#xff0c;专注于分享python数据分析领域知识。 ✍ 本文录入于《python网络爬虫实战教学》&#xff0c;本专栏针对…

牛客刷题 | HJ68 成绩排序, HJ69 矩阵乘法,HJ70 矩阵乘法计算量估算

HJ68 成绩排序 题目链接 思路建立字典&#xff0c;key代表名字&#xff0c;value为数字&#xff0c;最后sorted函数按规定排序。注意名单中的名字会重名&#xff0c;所以key应该是名字加上编号&#xff0c;以免同名的分数被覆盖。将编号填充为3位数&#xff0c;方便最后输出名…

第1章 数据管理

思维导图 1.1 引言 从数据中获取的价值不可能凭空产生或依赖于偶然&#xff0c;需要有目标、规划、协作、和保障&#xff0c;也需要管理和领导力。定义&#xff1a; 数据管理是为了交付、控制、保护并提升数据和信息资产的价值&#xff0c;在其整个生命周期中制定计划、制度、…

【Web】浅聊Hessian反序列化原生jdk利用与高版本限制绕过

目录 前言 原理分析 EXP Hessian2 低版本 直接Runtime命令执行 Hessian2 高版本 利用Unsafe加载恶意字节码二次调用触发初始化 利用TemplatesImpl实例化恶意类 jdk高版本打JNDI 前文&#xff1a;【Web】浅聊Hessian异常toString姿势学习&复现 前言 上篇文章介绍…

mysql笔记:23. 在Mac上安装与卸载MySQL

文章目录 下载MySQL安装包1. 打开MySQL官网&#xff0c;点击DOWNLOADS2. 点击GPL Downloads3. 点击MySQL Community Server打开下载页面4. 选择需要的文件进行下载5. ARM or x86 DMGbrewTAR卸载1. 在系统中卸载2. 在终端中卸载 MySQL对Mac电脑的适配十分强大&#xff0c;再加上…

Oracle with as用法

一、简介 with…as关键字&#xff0c;是以‘with’关键字开头的sql语句&#xff0c;在实际工作中&#xff0c;我们经常会遇到同一个查询sql会同时查询多个相同的结果集&#xff0c;即sql一模一样&#xff0c;这时候我们可以将这些相同的sql抽取出来&#xff0c;使用with…as定…

VMware迁移虚拟机后,源存储和新存储均能看到VM名称

描述&#xff1a;两台FC存储&#xff0c;各映射两个LUN。将源存储虚拟机迁移至新存储 源存储位置 DS5020-LUN1 新存储位置 V7000Test-LUN1 迁移任务均执行成功&#xff0c;无任何报错。但是有部分虚拟机迁移至新存储后&#xff0c;未释放源存储空间。在新旧存储列表都能看见…

后端使用前端页面的很好的推荐Layui

使用前提条件就是掌握初步的html&#xff0c;css&#xff0c;js脚本 后端被前端的vue等框架&#xff0c;不想学习&#xff0c;就是简单的一个页面满足后端使用 一般建议就是掌握了基础的html&#xff0c;css&#xff0c;js脚本后&#xff0c;然后就是深入学习了解jquery,再找…

手拉手整合Springboot3+RocketMQ2.3

RocketMQ 基本概念 消息模型Message Model RocketMQ 主要由 Producer、Broker、Consumer 三部分组成&#xff0c;其中 Producer 负责生产消息&#xff0c;Consumer 负责消费消息&#xff0c;Broker 负责存储消息。Broker 在实际部署过程中对应一台服务器&#xff0c;每个 Bro…

PHP全新美化广告横幅在线制作源码

源码简介 可以做网站的引流不需要安装上传就可以使用&#xff0c;在第一版基础上做了二次开发更加好用 注意&#xff1a;主机和服务器均可架设搭建,如果使用宝塔架设点击访问的时候提示找不到文件路径的时候,记得点击网站目录把防跨站攻击先关闭,这样就可以正常访问了,这款是…