14 Vue3中使用v-model绑定输入框

概述

v-model用于实现双向数据绑定,使用v-model绑定输入框是Vue3中最常见的用法之一。

比如,在制作登录界面的时候,我们会使用v-model绑定用户名和密码,这里的用户名和密码都是输入框。

基本用法

我们创建src/components/Demo14.vue,在这个组件中,我们要:

  • 1:使用ref定义username和password两个动态响应的字符串
  • 2:创建一个文本输入框和一个密码输入框
  • 3:给文本输入框通过v-model绑定username,给密码输入框通过v-model绑定password
  • 4:添加一个登录按钮
  • 5:给登录按钮绑定一个onLogin事件
  • 6:实现onLogin方法,在这个方法中组织表单的默认行为,并打印用户名和密码

代码如下:

<script setup>
import {ref} from "vue";const username = ref("")
const password = ref("")function onLogin(){console.log("用户名:",username.value)console.log("密码:",password.value)
}
</script>
<template><form v-on:submit.prevent><div>账号:<input type="text" v-model="username"></div><div>密码:<input type="password" v-model="password"></div><div><button @click="onLogin">登录</button></div></form>
</template>

接着,我们修改src/App.vue,引入Demo14.vue并进行渲染:

<script setup>
import Demo from "./components/Demo14.vue"
</script>
<template><h1>欢迎跟着Python私教一起学习Vue3入门课程</h1><hr><Demo/>
</template>

然后,我们浏览器访问:http://localhost:5173/

在这里插入图片描述

代码分析

先看看完整代码:

<script setup>
import {ref} from "vue";const username = ref("")
const password = ref("")function onLogin(){console.log("用户名:",username.value)console.log("密码:",password.value)
}
</script>
<template><form v-on:submit.prevent><div>账号:<input type="text" v-model="username"></div><div>密码:<input type="password" v-model="password"></div><div><button @click="onLogin">登录</button></div></form>
</template>

关键技术1:通过<form v-on:submit.prevent>,我们利用Vue3的特性,阻止了表单的默认提交事件。

<form v-on:submit.prevent>

关键技术2:通过<button @click="onLogin">登录</button>,我们给表单设置了提交事件

<button @click="onLogin">登录</button>

完整代码

package.json

{"name": "hello","private": true,"version": "0.1.0","type": "module","scripts": {"dev": "vite","build": "vite build"},"dependencies": {"vue": "^3.3.8"},"devDependencies": {"@vitejs/plugin-vue": "^4.5.0","vite": "^5.0.0"}
}

vite.config.js

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'export default defineConfig({plugins: [vue()],
})

index.html

<!doctype html>
<html lang="en"><head><meta charset="UTF-8" /><link rel="icon" type="image/svg+xml" href="/vite.svg" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Vite + Vue</title></head><body><div id="app"></div><script type="module" src="/src/main.js"></script></body>
</html>

src/main.js

import { createApp } from 'vue'
import App from './App.vue'createApp(App).mount('#app')

src/App.vue

<script setup>
import Demo from "./components/Demo14.vue"
</script>
<template><h1>欢迎跟着Python私教一起学习Vue3入门课程</h1><hr><Demo/>
</template>

src/components/Demo14.vue

<script setup>
import {ref} from "vue";const username = ref("")
const password = ref("")function onLogin(){console.log("用户名:",username.value)console.log("密码:",password.value)
}
</script>
<template><form v-on:submit.prevent><div>账号:<input type="text" v-model="username"></div><div>密码:<input type="password" v-model="password"></div><div><button @click="onLogin">登录</button></div></form>
</template>

启动方式

yarn
yarn dev

浏览器访问:http://localhost:5173/

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

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

相关文章

80x86汇编—指令系统

文章目录 MOV非法传送 XCHGXLAT堆栈指令 push 和 pop标志寄存器指令运算指令控制转移类指令&#xff08;重点&#xff09;条件转移指令 顺序是按照我们老师教的顺序&#xff0c;仅仅作为复习笔记。 汇编入门真的简单&#xff0c;深入难&#xff0c;毕竟学过计组CPU都只寄组的难…

华为安防监控摄像头

华为政企42 华为政企 目录 上一篇华为政企城市一张网研究报告下一篇华为全屋wifi6蜂鸟套装标准

电商数据之巅:挖掘无限价值的蓝海

在数字时代的大潮中&#xff0c;数据已成为新的黄金和石油&#xff0c;尤其在电商领域。电商平台每天都在产生海量的数据&#xff0c;这些数据不仅是对消费者行为的记录&#xff0c;更是隐藏着无限的商机和价值。本文将带你走进电商数据的神奇世界&#xff0c;探寻其无尽可能的…

Xcode15 iOS 17 Simulator 离线安装,模拟器安装

Xcode 15 安装包的大小相比之前更小&#xff0c;因为除了 macOS 的 Components&#xff0c;其他都需要动态下载安装&#xff0c;否则提示 iOS 17 Simulator Not Installed。 如果不安装对应的运行模拟库 无法真机和模拟器运行&#xff0c;更无法新建项目。但是由于模拟器安装包…

canvas入门笔记(上)

Canvas Canvas简介 Canvas API 提供了一个通过JavaScript 和 HTML的元素来绘制图形的方式。它可以用于动画、游戏画面、数据可视化、图片编辑以及实时视频处理等方面。 Canvas API 主要聚焦于 2D 图形。而同样使用<canvas>元素的 WebGL API 则用于绘制硬件加速的 2D 和…

多标签分类中常用指标和可视化例子

多标签分类中常用指标 1. 准确率&#xff08;Accuracy&#xff09; 准确率计算的是正确预测的标签比例。对于多标签分类&#xff0c;这通常是一个较为严格的指标&#xff0c;因为要求每个实例的所有标签都预测正确。 Accuracy 正确预测的标签数 总标签数 \text{Accuracy} \…

如何自定义右键弹框并实现位置自适应?

一、问题 右键显示弹框&#xff0c;但是靠近浏览器边缘的部分会被隐藏&#xff0c;需要实现弹框位置自适应 二、 问题分析 如果想要最终弹框的宽高不超过屏幕视口&#xff0c;就等于屏幕视口的总宽/高减去弹框打开时的起点坐标&#xff0c;剩下的部分大于等于弹框的宽/高&…

Jmeter如何测试需要登录的接口

首先说明本系统的登录采用的是session&#xff0c;但是无论是什么登录步骤都是大差不差的 1.首先要构造用户测试的数据保存到数据库 2.构造请求获取请求后的请求头&#xff08;如果需要代码参照请看最后&#xff09; 3.解析请求头获取需要的cookie&#xff08;sessionId是放…

公司电脑监控软件:守护企业信息安全的重要防线

在当今信息化时代&#xff0c;企业信息安全问题日益突出&#xff0c;电脑监控软件作为企业信息安全的重要保障&#xff0c;越来越受到企业的关注和重视。本文将围绕公司电脑监控软件展开讨论&#xff0c;探讨其作用、优势以及如何选择合适的电脑监控软件。 首先&#xff0c;公司…

07 Vue3中的三元表达式

概述 三元表达式时JavaScript中比较常用的一种原生语法&#xff0c;能够在一行代码中实现if-else的分支逻辑。 在Vue的双大括号中&#xff0c;我们也可以使用三元表达式去实现一些简单的条件渲染。 基本用法 我们创建src/components/Demo07.vue&#xff0c;先尝试一下三元表…

【flink】状态清理策略(TTL)

flink的keyed state是有有效期(TTL)的&#xff0c;使用和说明在官网描述的篇幅也比较多&#xff0c;对于三种清理策略没有进行横向对比得很清晰。 全量快照清理(FULL_STATE_SCAN_SNAPSHOT)增量清理(INCREMENTAL_CLEANUP)rocksdb压缩清理(ROCKSDB_COMPACTION_FILTER) 注意&…

3D 纹理贴图基础知识

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 介绍 纹理贴图是创建模型时离不开的最后一块拼图。同样&#xff0c;…