Vue基本使用-02

news2024/11/25 0:50:50

   上节我们讲了什么是mvvm模型,以及我们vue的一些常用指令,今天给大家讲一下vue的基本使用,在将之前我们需要重点讲解我们的一个指令,v-model指令

   v-model

    v-model 可以在组件上使用以实现双向绑定,什么是双向绑定呢?意思就是当我们的数据发生变化的时候,我们的视图也会跟着变化;视图发生变化的时候,我们的数据也会发生变化

    你可以用 v-model 指令在表单 <input><textarea> 及 <select> 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但 v-model 本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。

   话多说直接上代码!!!!!

     在这里我们定义了一个input最基本的输入框,唯一的不同是让他对 msg 这个数据进行了双向绑定,并且我们还展示了一下我们的 msg 这个属性的值

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../static/vue.global.js"></script>
	</head>
	<body>
		<div id="app">
	       测试:<input type="text" v-model="msg"><br>
		   {{msg}} 
		</div>
		<script>
			const app=Vue.createApp({
		      data() {
		      	return {
		      		msg:"aaa"	
		      	}
		      }
	 })		
		 app.mount("#app")
		</script>
	</body>
</html>

       效果:当我们的视图发生了变化,数据也会跟着变化.

0f33ee92cfa549cca144a5c61e28162d.png 

   这里我们还可以对 <select/>:下拉框     <textarea/>:文本框等做一些常用的案例,我会给大家一一解释我们的意思是什么

我们直接从性别开始: 

        在这里我们使用的是input的radio属性,声明它是一个单选框,value 是选择的值,这里我们使用的是0或者1,也可以写作男或者女,他们都对sex属性进行了双向绑定,我们标签后面的男或者女是为了在视图中显示,没有任何实际作用,当我们的男被选中,我们的双向绑定就会将被选中的这个值 value 赋值给 sex属性,也就是 sex就是0

       爱好:

        在这里我们先需要定义一个数组,用来存储我们的爱好,因为我们的爱好不会只有一个的,跟刚才性别的逻辑是一样的,当我们的多选框的某一个被选中之后,会将value的值,存放到我们双向绑定的happy属性中

       班级:

        我们的下拉框的值只有一个,所以只需要定义一个空字符,将其绑定到下拉框的select上,为什么我们不需要写value属性呢?在我们有开闭标签时,是不需要写任何的value,我们就可以获取到开闭标签中间值的,什么是开闭标签呢? <option></option>有开始有结束就是开闭标签 还有一种方式是<input/> 这个是需要写我们的value属性的。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../static/vue.global.js"></script>
	</head>
	<body>
		<div id="app">
	       测试:<input type="text" v-model="msg"><br>
		   {{msg}} <br/>
		   性别:<input type="radio" name="sex" value="0" v-model="sex">男
		   <input type="radio" name="sex" value="1" v-model="sex">女
		    <br>
			展示性别: {{sex}}
			<br>
			爱好:
			<input type="checkbox" value="rapper" name="happy" v-model="happy">rapper
			<input type="checkbox" value="打篮球" name="happy" v-model="happy">打篮球
			<input type="checkbox" value="唱" name="happy" v-model="happy">唱
			<input type="checkbox" value="跳" name="happy" v-model="happy">跳
			<br>
			爱好:{{happy}}
			<br>
			班级:<select v-model="aaa">
				<!--为什么不用加value,因为我们的下拉框有默认值,就是没有value的是时候,我们的值就是标签中间的值-->
				<option value="A365">A365</option>
				<option value="A265">A265</option>
				<option value="A165">A165</option>
			</select>
	         {{aaa}}
			 <br>
			 文本框:
			 <textarea v-model="bbb"></textarea>
			 {{bbb}}
		</div>
		<script>
			const app=Vue.createApp({
		      data() {
		      	return {
		      		msg:"aaa",
					sex:"0",
					happy:["rapper"],
					aaa:"A365",
					bbb:"aa"
		      	}
		      }
			
	 })		
		 app.mount("#app")
		</script>
	</body>
</html>

v-on

  • 缩写@

  • 预期Function | Inline Statement | Object

  • 参数event

  • 修饰符

    • .stop - 调用 event.stopPropagation()
    • .prevent - 调用 event.preventDefault()
    • .capture - 添加事件侦听器时使用 capture 模式。
    • .self - 只当事件是从侦听器绑定的元素本身触发时才触发回调。
    • .{keyCode | keyAlias} - 只当事件是从特定键触发时才触发回调。
    • .native - 监听组件根元素的原生事件。
    • .once - 只触发一次回调。
    • .left - (2.2.0) 只当点击鼠标左键时触发。
    • .right - (2.2.0) 只当点击鼠标右键时触发。
    • .middle - (2.2.0) 只当点击鼠标中键时触发。
    • .passive - (2.3.0) 以 { passive: true } 模式添加侦听器

用法

       绑定事件监听器。事件类型由参数指定。表达式可以是一个方法的名字或一个内联语句,如果没有修饰符也可以省略。

        用在普通元素上时,只能监听原生 DOM 事件。用在自定义元素组件上时,也可以监听子组件触发的自定义事件

        在监听原生 DOM 事件时,方法以事件为唯一的参数。如果使用内联语句,语句可以访问一个 $event property:v-on:click="handle('ok', $event)"

      直接上代码!!!

      我们直接用的是简写形式,@click,如果不喜欢的话我们可以使用v-on:click,我们只是声明的点击事件,我们还可以声明其他的事件, 语法 v-on:动作=“方法名字(参数)”

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../static/vue.global.js"></script>
	</head>
	<body>
		<div id="app">
			<button @click="test1()">普通按钮1</button>
			<button @click.once="test2()">once按钮2</button>
			<button @click.left="test3()">left按钮3</button>
			<button @click.right="test4()">right按钮4</button>
		</div>
		<script>
			const app=Vue.createApp({
			methods: {
			 	test1(){
			 		alert("点击事件")
			 	},
				test2(){
					alert("once,只会触发一次")
				},
				test3(){
					alert("left 鼠标左键点击")
				},
				test4(){
					alert("rigth 鼠标右键点击")
				}
			}

	 })		
		 app.mount("#app")
		</script>
	</body>
</html>

 简易轮播图

   这里我们使用到了 v-bind,以及鼠标点击事件

    思路: 通过点击事件,每点一次,照片路径的数组就切换,如果到最后一个照片,索引从0开始切换

    这里我们先定义一个数组,里面存放的是我们照片的路径,再定义一个初始为0的索引,让我们的img这个标签的src属性绑定,可以相当于识别出我们的imgs是谁,index是谁,然后就是我们的点击事件,每次点击,索引加一,意思就是 本来是 src="imgs[0]",点击一次按钮就是 src="imges[1]"

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../static/vue.global.js"></script>
		<style>
			img{
				width: 100px;
				heigth:100px
			}
		</style>
	</head>
	<body>
		<div id="app">
			<img :src="imgs[index]"/>
			<button @click="changeImge()">切换</button>
		</div>
		<script>
			const app=Vue.createApp({
		      data() {
		      	return {
		      		imgs:["../static/img/1.jpg","../static/img/2.jpg","../static/img/3.jpg","../static/img/4.jpg","../static/img/5.jpg"],
					index:0
		      	}
		      },
			  methods: {
			  	changeImge() {
					if(this.index>=this.imgs.length-1){
						this.index=0
					}else{
						this.index++
					}
			  		
			  	}
			  },
	 })		
		 app.mount("#app")
		</script>
	</body>
</html>

 watch

    watch:用于监听数据的变化,当数据发送变化的时候,我们可以进行一些逻辑操作.

      这里我们的案例是: 当m 这个属性发生变化的时候,km也随着变化,我们输入2000m,km的输入框会变成2,输入3000m,km的输入框会变成3……

     我们的watch是一个属性,属性里面是我们监听的哪个属性 属性名(新值,旧值){ 逻辑代码 }

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../static/vue.global.js"></script>
		<style>
			img{
				width: 100px;
				heigth:100px
			}
		</style>
	</head>
	<body>
		<div id="app">
			m:<input type="text" v-model="m"><br>
			km:<input type="text" v-model="km"><br>
		</div>
		<script>
			const app=Vue.createApp({
		      data() {
		      	return {
		      		m:"1000",
					km:"1"
		      	}
		      },
			watch: {
				m(newValue, oldValue) {
				this.km=this.m/1000
				}
			},
		
	 })		
		 app.mount("#app")
		</script>
	</body>
</html>

computed

       计算属性是vue的强大功能之一,假如我们的逻辑代码中只需要拿到一个值,都可以放在我们的计算属性之中,计算属性的结果会被缓存,也就是说,当第一次调用的时候,才会被计算,计算之后被放在缓存之中,为我们节省了许多的资源,只要内部的数据发生变化,还是会重新进行计算

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../static/vue.global.js"></script>
	</head>
	<body>
		<div id="app">
		 {{add()}}
         {{add()}}
		 {{sex}}
		 {{sex}}
		 {{sex}}
		</div>
		<script>
			const app=Vue.createApp({
				data(){
					return{
						idcard:"410424200101274021"
					}
				},
		     	methods: {
			 	add(){
			 		console.log("方法执行")
					return this.idcard.substr(16,1)%2==0?"女":"男";
			 	}
			},
			computed: {
				sex() {
					console.log("计算属性执行")
					return this.idcard.substr(16,1)%2==0?"女":"男";
				}
			},

	 })		
		 app.mount("#app")
		</script>
	</body>
</html>

 我们是调用了两次方法,三次计算属性,我们可以发现计算属性只是被调用了一次,其他都是从缓存里拿的

152f6b692a80483ca9aec779f90ba2b4.png

 component组件

     

      组件(component)是vue.js最强大的功能之一。组件的作用就是封装可重用的代码,通常一个组件就是一个功能体,便于在多个地方都能够调用这个功能体。 每个组件都是Vue的实例对象。 我们实例化的Vue对象就是一个组件,而且是所有组件的根组件 ,在我的理解看来,组件就是一个标签,这个标签内有什么需要你自己定义,然后向拼积木一样,拼起来搭建一个自己的网站

    每个组件都会有自己的方法以及数据,并且他们是不会互相干涉的,当两个重复的组件使用时,数据是不会共享的

 全局组件     

      my-test就是我们组件的名字自定义的标签,官方建议我们使用 xx-xx的形式来写,或者是驼峰命名的方式

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../static/vue.global.js"></script>
		
	</head>
	<body>
		<div id="app">
				<my-test></my-test>
				<my-test></my-test>
				<my-test></my-test>
		</div>
		<script>
			const app=Vue.createApp()		
	        /*  定义组件  全局组件 */
	             app.component("my-test",{
	                 data(){
	                     return {
	                         name:"test"
	                     }
	                 },
	                 template:
	                `<div>
	                     <div>我就是一个测试</div>
	                     <button @click='test'>按钮</button>
	                 </div>`
	                 ,
	                 methods:{ 
	                     test(){
	                         alert("这就是一个测试的按钮呀  "+this.name)
	                     }
	                 }
	             })
		 app.mount("#app")
		</script>
	</body>
</html>

   局部组件

   在vue的实例对象中内部注册我们的组件

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../static/vue.global.js"></script>
		
	</head>
	<body>
		<div id="app">
			<xue-cheng></xue-cheng>
		</div>
		<script>
			const app=Vue.createApp({
		      components:{
				  "xue-cheng":{
					  template:"<h1>111</h1>"
				  }
			  }	
	 })		
		 app.mount("#app")
		</script>
	</body>
</html>

 

 

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

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

相关文章

【Ubuntu双系统】两块硬盘分别安装系统,一块硬盘安装Ubuntu 一块安装Windows

【Ubuntu双系统】两块硬盘分别安装双系统&#xff0c;一块硬盘安装Ubuntu 一块安装Windows 前言安装Ubuntu前置操作安装过程参考文献 前言 机器情况&#xff1a;两块1T的硬盘&#xff0c;其中一块已安装Windows 11现需在另一块硬盘上安装Ubuntu&#xff0c;该硬盘还未初始化Ub…

SQL聚合函数---汇总数据

此篇文章内容均来自与mysql必知必会教材&#xff0c;后期有衍生会继续更新、补充知识体系结构 文章目录 SQL聚集函数表&#xff1a;AGV()count()根据需求可以进行组合处理 max()min()max&#xff08;&#xff09;、min&#xff08;&#xff09;、avg&#xff08;&#xff09;组…

Mac下载了docker,在终端使用docker命令时用不了

问题&#xff1a;在mac使用docker的时候&#xff0c;拉取docker镜像失败 原因&#xff1a;docker是需要用app使用的 &#xff0c;所以在使用的时候必须打开这个桌面端软件才可以在终端上使用docker命令&#xff01;&#xff01;&#xff01;

【PL理论】(21) 函数式语言:支持匿名函数 fun x → E | 设计递归函数 | 支持递归函数:let rec ...

&#x1f4ad; 写在前面&#xff1a;本章我们将讲解支持匿名函数&#xff0c;先回顾一下 F# 语言表示函数的方法&#xff0c;然后引出它。随后我们讲解一下如何设计递归函数&#xff0c;最后让我们的 F- 语言支持递归函数。 目录 0x00 回顾&#xff1a;F# 语言 0x01 支持匿名…

深度学习笔记: 最详尽Airbnb租赁搜索排名设计

欢迎收藏Star我的Machine Learning Blog:https://github.com/purepisces/Wenqing-Machine_Learning_Blog。如果收藏star, 有问题可以随时与我交流, 谢谢大家&#xff01; Airbnb租赁搜索排名 1. 问题陈述 Airbnb用户在特定地点搜索可用房源。系统应在搜索结果中对多个房源进…

Qt飞机大战小游戏

Gitee地址 &#xff1a;plane-game: 基于Qt的飞机大战小游戏 GitHub地址&#xff1a; https://github.com/a-mo-xi-wei/plane-game

Vue25-内置指令02:v-text指令

一、v-html对比v-text v-html支持结构的解析&#xff0c;v-text不支持结构的解析。 二、v-html的安全性问题 2-1、cookie的原理&#xff08;node.js&#xff09; 7天免登录&#xff0c;cookie实现。 cookie的本质就是类似于json的字符串&#xff0c;格式是&#xff1a;key-va…

图片导入AutoCAD建立草图—CAD图像导入插件

插件介绍 CAD图像导入插件可将PNG&#xff0c;JPG等格式图片导入到AutoCAD软件内建立图像边缘的二维线条模型。插件可以提取图像黑色或白色区域的边界&#xff0c;并可绘制原状边界或平滑边界两种样式。 模型说明 边界提取&#xff0c;黑色或白色边界的提取根据原图类型选择…

【云原生| K8S系列】Kubernetes Daemonset,全面指南

Kubernetes中的DaemonSet是什么? Kubernetes是一个分布式系统&#xff0c;Kubernetes平台管理员应该有一些功能可以在所有节点上运行特定于平台的应用程序。例如&#xff0c;在所有Kubernetes节点上运行日志代理。 这就是Daemonset发挥作用的地方。 Daemonset是一个原生的K…

查询满足条件的元组-WHRER子句(运算符、BETWEEN 、LIKE、IN、NULL)

一、WHERE子句&#xff08;筛选出使选择表达式为真的元组&#xff09; 1、SELECT-FROM子句可以实现数据的查询&#xff08;会查询出所有元组&#xff09;&#xff0c;加上WHERE子句之后可以实现数据的筛选&#xff08;会查询出满足条件的元组&#xff09; SELECT 【ALL|DISTI…

windows 下 基于 WSL2安装DeepSpares进行YOLOV8 v5 的加速推理

文章大纲 简介软硬件限制安装安装 WSL2 基础环境WSL2 手动安装安装 miniconda 环境本地USB 摄像头使用:Windows 无延迟视频流本地USB 摄像头使用:WSL2 挂载 本地 USB 摄像头WSL2更新报错: 离线安装 wsl --update安装 DeepSpares测试打开本地USB 摄像头进行测试测试结果参考文…

50.Python-web框架-Django中引入静态的bootstrap样式

目录 Bootstrap 官网 特性 下载 在线样例 Bootstrap 入门 Bootstrap v5 中文文档 v5.3 | Bootstrap 中文网 在django中使用bootstrap 新建static\bootstrap5目录&#xff0c;解压后的Bootstrap文件&#xff0c;拷贝项目里就好。 在template文件里引用css文…

Nginx+KeepAlived高可用负载均衡集群的部署

目录 一.KeepAlived补充知识 1.一个合格的群集应该具备的特点 2.健康检查&#xff08;探针&#xff09;常用的工作方式 3.相关面试问题 问题1 问题2 二.Keepealived脑裂现象 1.现象 2.原因 硬件原因 运用配置原因 3.解决 4.预防 方法1 方法2 方法3 方法4 三.…

VUE之重定向redirect

VUE之路由和重定向redirect 这个小知识点是在学习做项目的时候遇到的一个问题&#xff0c;借鉴了一个他人的项目&#xff0c;是一个酒店管理系统&#xff0c;拿到源码之后导到我的vscode里。 参考链接 导的过程比较顺利&#xff0c;正常安装&#xff0c;加依赖&#xff0c;没有…

禁渔期水域监管:EasyCVR视频智能监控方案

一、背景与需求分析 根据农业部印发的《中国渔政亮剑2024系列专项执法行动方案》&#xff0c;我国将持续推进长江十年禁渔、海洋伏季休渔、黄河等内陆重点水域禁渔等专项行动。根据四川省相关规定&#xff0c;每年3月1日至6月30日为禁渔期&#xff0c;在此期间&#xff0c;四川…

坚持每天学编程的有多少?聊聊有多少人躺平了,工作生活压力大吗

以前刚开始学编程的时候&#xff0c;一晚上就能看完一本Frontpage网页编程的书&#xff0c;就像是WORD一样简单&#xff0c;第二天就敢去找工作。工作后学习VB6SQL SERVER数据库&#xff0c;几百页的大部头书&#xff0c;基本上一个月也能看完&#xff0c;后面还买了2个大书柜&…

【全开源】Java无人共享棋牌室茶室台球室系统JAVA版本支持微信小程序+微信公众号

无人共享棋牌室系统——棋牌娱乐新体验 &#x1f3b2;引言 随着科技的不断发展&#xff0c;传统棋牌室正逐渐迈向智能化、无人化。今天&#xff0c;我要为大家介绍的就是这款引领潮流的“无人共享棋牌室系统”。它不仅为棋牌爱好者提供了全新的娱乐体验&#xff0c;更在便捷性…

数据预处理 #数据挖掘 #python

数据分析中的预处理步骤是数据分析流程中的重要环节&#xff0c;它的目的是清洗、转换和整理原始数据&#xff0c;以便后续的分析能够准确、有效。预处理通常包括以下几个关键步骤&#xff1a; 数据收集&#xff1a;确定数据来源&#xff0c;可能是数据库、文件、API或网络抓取…

软件游戏提示msvcp140.dll丢失的原因分析及解决方法

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“计算机缺失msvcp140.dll”。那么&#xff0c;这个错误是什么意思呢&#xff1f;它会造成哪些问题&#xff1f;小编将从以下几个方面进行详细解析。 一&#xff0c;了解msvcp140.dll是什么 …

尚品汇-(一)

&#xff08;1&#xff09;技术介绍 &#xff08;2&#xff09;业务介绍 &#xff08;3&#xff09;虚拟机安装 可以稍后配置镜像:选第二个 采用第二项NET模式&#xff1a; 安装完成&#xff1a;开启 不选择界面的&#xff0c;选择基础的 分配了ip&#xff1a; 测试网络 为…