vue基础语法下(样式绑定、事件处理器、form表单、组件通信)

1.样式绑定

1.1 class绑定

使用方式:v-bind:class=“expression”
expression的类型:字符串、数组、对象

1.2 style绑定

v-bind: style=“expression”
expression的类型:字符串、数组、对象

// An highlighted block
<!DOCTYPE html>
<html>
  <head>
  	<meta charset="utf-8">
  	<title></title>
  	<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
  	<style>
  		.a {
  			font-size: 36px;
  		}
  		.b {
  			font-size: 36px;
  		}
  	</style>
  </head>
  <body>
  	<div id="app">
  		<p>基本样式绑定</p>
  		<span class="a">犯我华夏</span><br>
  		<span class="b">虽远必诛</span><br>
  		<span :class="c">犯我华夏</span><br>
  		<span :class="d">虽远必诛</span><br>
  		<p>样式二</p>
  		<span style="font-size: 60px;">犯我华夏,虽远必诛</span><br>
  		<span :style="{fontSize:e}">犯我华夏,虽远必诛</span>
  	</div>
  	<script type="text/javascript">
  		new Vue({
  			el: '#app',
  			data() {
  				return {
  					c: 'a',
  					d: 'b',
  					e:'60px'
  				}
  				
  			}
  
  		});
  	</script>
  </body>
</html>

输出结果
在这里插入图片描述

2.事件处理器

2.1 事件修饰符

// An highlighted block
  <!-- 阻止单击事件冒泡 -->
  <a v-on:click.stop="doThis"></a>
  <!-- 提交事件不再重载页面 -->
  <form v-on:submit.prevent="onSubmit"></form>
  <!-- 修饰符可以串联  -->
  <a v-on:click.stop.prevent="doThat"></a>
  <!-- 只有修饰符 -->
  <form v-on:submit.prevent></form>
  <!-- 添加事件侦听器时使用事件捕获模式 -->
  <div v-on:click.capture="doThis">...</div>
  <!-- 只当事件在该元素本身(而不是子元素)触发时触发回调 -->
  <div v-on:click.self="doThat">...</div>
  <!-- click 事件只能点击一次 -->
  <a v-on:click.once="doThis"></a>

2.2 按键修饰符

// An highlighted block
  <!-- 只有在 keyCode 是 13 时调用 vm.submit() -->
  <input v-on:keyup.13="submit">

  Vue为最常用的按键提供了别名
  <!-- 同上 -->
  <input v-on:keyup.enter="submit">

  全部的按键别名:
  .enter
  .tab
  .delete (捕获 "删除""退格")
  .esc
  .space
  .up
  .down
  .left
  .right
  .ctrl
  .alt
  .shift
  .meta      

2.3 冒泡事件

// An highlighted block
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
		<style>
			.one {
				width: 400px;
				height: 400px;
				background-color: blueviolet;
			}
			.two {
				width: 300px;
				height: 300px;
				background-color: yellow;
			}
			.three {
				width: 200px;
				height: 200px;
				background-color: red;
			}
			.four {
				width: 100px;
				height: 100px;
				background-color: green;
			}
		</style>
	</head>
	<body>
		<div id="app">
			<div class="one" @click.stop="do_one">
				<div class="two" @click.stop="do_two">
					<div class="three" @click.stop="do_three">
						<div class="four" @click.stop="do_four"></div>
					</div>
				</div>
			</div>
			<input v-model="msg"/>
			<button type="button" @click="funa">点我</button>
			<button type="button" @click.once="funa">只能点一次</button>
		</div>
		
		<script type="text/javascript">
			new Vue({
				el: '#app',
				data() {
					return {
						msg: 'nb'
					}
					
				},
				methods:{
					do_one() {
						alert("one")
					},
					do_two(){
						alert("two")
					},
					do_three() {
						alert("three")
					},
					do_four() {
						alert("four")
					},
					funa() {
						alert(this.msg);
					}
				}
	
			});
		</script>
	</body>
</html>

输出结果
在这里插入图片描述

3.表单

3.1 修饰符

.lazy
​ 默认情况下, v-model在input事件中同步输入框的值与数据,但你可以添加一个修饰符lazy,从而转变为在change事件中同步

.number
将用户的输入值转为 Number 类型

.trim
自动过滤用户输入的首尾空格

3.2 Vue表单

// An highlighted block
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="app">
			姓名:<input type="text" v-model="name"/> <br>
			密码:<input type="password" v-model="pwd"/> <br>
			年龄:<input type="text" v-model="age"/> <br>
			性别:<input type="radio" name="sex" value="1" v-model="sex"/><input type="radio" name="sex" value="0" v-model="sex"/><br>
			爱好:<span v-for="n in likes">
				<input type="checkbox" :value="n.id" v-model="selectedLikes"/>{{n.name}}
			</span> <br>
			类别:
			<select v-model="selectedType">
				<option v-for="n in types" :value="n.id">{{n.name}}</option>
			</select><br>
			备注:<textarea rows="5" cols="20" v-model="remark"></textarea> <br>
			确认<input type="checkbox" v-model="ok"/>
			<button type="button" @click="do_sub" :disabled="!ok">提交</button>
		</div>
		<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
		<script>
			new Vue({
				el: '#app',
				data() {
					return {
						name: '',
						pwd: '',
						age: 10,
						sex: '1',
						likes: [
							{id:1,name:'摸摸唱'},
							{id:2,name:'贴身舞'},
							{id:3,name:'抱着睡'},
							{id:4,name:'kiss'}
						],
						types:[
							{id:1,name:'清纯'},
							{id:2,name:'御姐'},
							{id:3,name:'萝莉'},
							{id:4,name:'office lady'}
						],
						remark: '成年人不做选择..',
						ok: false,
						selectedLikes: [],
						selectedType: null
					}
				},
				methods: {
					do_sub() {
						var obj = {
							name: this.name,
							pwd: this.pwd,
							age: this.age,
							sex: this.sex,
							likes: this.selectedLikes,
							type: this.selectedType,
							remark: this.remark
						};
						console.log(obj);
					}
				}
			});
		</script>
	</body>
</html>

输出结果
在这里插入图片描述

5.vue组件传值

// An highlighted block
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
	</head>
	<body>
		<div id="app">
			<my-button m='zs' @three_click="fnA"></my-button>
			<my-button m='王五' @four_click="fnB"></my-button>
		</div>
		<script type="text/javascript">
		const vm = new Vue({
			el:'#app',
			components:{
				'my-button':{
					props:['m'],
					template:'<button @click="do_sub">{{m}}提交审核{{n}}次</button>',
					data(){
						return{
							n:0
						}
					},
					methods:{
						do_sub(){
							let name='张三';
							let sex = '男';
							let hobby='小姐姐';
							this.n ++;
							//通过自定义事件完成
							if(this.n % 3==0)
							this.$emit('three_click',name,sex,hobby);
							if(this.n % 4==0)
							this.$emit('four_click',name,hobby);
						}
					}
				}
			},
			data:{
				
			},
			methods:{
				fnA(a,b,c){
					console.log(a,b,c)
				},
				fnB(a,b,c){
					console.log(a,b,c)
				}
			}
		})
		
		</script>
	</body>
</html>

输出结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在Vue3中,可以使用v-model指令来元素,例如input、textarea和select等。在元素上使用v-model指令,可以将元素的值与Vue实例中的数据进行双向。 例如,我们可以在Vue组件中使用以下代码来一个input元素: ``` <template> <div> <form> <label for="name">姓名:</label> <input type="text" id="name" v-model="name"> </form> </div> </template> <script> export default { data() { return { name: '' } } } </script> ``` 在上面的代码中,我们使用v-model指令将input元素的值与Vue实例中的name属性进行双向。当用户在input元素中输入内容时,Vue实例中的name属性也会随之更新。反之,当Vue实例中的name属性发生变化时,input元素的值也会随之更新。 需要注意的是,在Vue3中,v-model指令的默认行为已经发生了变化。在Vue2中,v-model指令默认会将元素的value属性与Vue实例中的数据进行双向。但在Vue3中,v-model指令默认会将元素的modelValue属性与Vue实例中的数据进行双向。因此,在使用v-model指令时,需要根据元素的类型和属性进行相应的配置。例如,对于checkbox和radio等元素,需要使用:checked和:value等属性来进行。 ### 回答2: 在Vue 3中,v-modelform变得更加灵活和易用。使用v-model,可以实现双向,也就是说,当用户在中输入内容时,的值会自动更新到Vue实例中的数据,反之亦然。以下是在Vue 3中form的步骤: 1. 在data选项中中的数据属性。例如,您可以义一个名为“formData”的对象,其中包含中所有输入字段的值。 2. 使用v-model指令将数据属性输入组件上。例如,您可以在文本框中使用“v-model = 'formData.username'”将formData对象中的“username”属性与文本框值。 3. 当用户在中输入内容时,v-model指令会自动更新formData对象中相应的属性值。 4. 如果您还需要在提交时执行自义操作,可以使用@submit事件监听提交事件,并在事件处理程序中执行所需的操作。 以下是一个简的注册的示例代码: ``` <template> <form v-on:submit.prevent="onSubmit"> <div> <label for="username">用户名:</label> <input type="text" id="username" v-model="formData.username" /> </div> <div> <label for="password">密码:</label> <input type="password" id="password" v-model="formData.password" /> </div> <button type="submit">注册</button> </form> </template> <script> export default { data() { return { formData: { username: '', password: '', }, }; }, methods: { onSubmit() { // 执行提交操作 console.log(this.formData); }, }, }; </script> ``` 在上面的示例中,formData对象用于存储输入字段的值,v-model指令将formData对象中的属性与输入字段值在一起,@submit事件监听提交事件,并在事件处理程序中输出formData对象的值。 ### 回答3: Vue3中v-modelform,与Vue2有所不同,Vue3使用了Composition API。处理数据的方式也更加智能化,灵活性更高。下面是具体解析: 1. V-model的使用方式 在Vue3中,我们可以使用v-model实现数据的双向。与Vue2相比,Vue3的v-model使用方式有所改变,我们不再传递一个value和update事件,而是使用一个ModelValue对象。同时,在组件时,需使用.emits属性指组件可触发的事件。在composition API中也提供了一个useModel函数,可以方便地义双向数据。 2. Form数据的处理 在Vue2中,我们一般使用v-modelform,通过@submit事件提交form数据。在Vue3中,我们可以使用v-model元素,然后通过watch监听元素的变化。当元素发生变化时,watch函数可以自动更新数据。在提交时,我们可以直接使用ref获取数据,然后通过AJAX请求来提交数据。 3. 使用响应式对象管理数据 在Vue3中,我们可以使用reactive对象来管理数据,使数据变为响应式的。这样,在元素发生变化时,实时更新数据。同时,我们还可以使用toRefs函数将响应式对象转化为可响应的对象,使得更新数据时,可以自动更新视图。 4. 借助第三方组件库优化的处理 Vue3的组合式API让我们可以方便地封装逻辑,将数据的处理功能封装为一个能够重复使用的组件。借助第三方组件库,如ElementUI或Ant Design Vue等,我们可以在项目中快速地搭建出完备、效果优美的组件,进一步提高开发效率。 总之,Vue3中v-modelform,可以处理数据的方式更加智能化,操作灵活性更高。结合响应式对象等特性,我们可以更快地搭建出效率高、可复用的组件,减少开发成本和工作量,提高生产力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值