vue是渐进式的javascript框架,框架就是自己的规则的一套语法。本文记录了常用的vue语法以及使用方法。
目录
1.差值表达式(声明式渲染/文本差值/胡子语法)
- 语法:{{表达式}}
- 作用:可以把vue数据变量直接显示在标签内
- vue数据变量存放位置:data函数return的对象里面
<template>
<div>
<h1>{{msg}}</h1>
</div>
</template>
<script>
export default {
data(){ // 格式固定, 定义vue数据之处
return{
msg:'hello vue'
}
}
}
</script>
...
2.v-bind指令
- 语法:v-bind:属性名=“vue变量”
- 简写::属性名=“vue变量”
- 动态属性获取到的是vue变量的值,静态属性获取到的是‘vue变量’字符串
...
<a v-bind:herf="link">给链接绑定herf属性<a>
...
<script>
export default {
data(){ // 格式固定, 定义vue数据之处
return{
link:'http://www.baidu.com'
}
}
}
</script>
...
3.v-on指令
- 作用:给标签绑定事件
- 语法:v-on:事件名=“要执行的少量代码”
或者:v-on:事件名=“methods里的函数名”
或者: v-on:事件名=“函数名(实参)” - 简写:@事件名=“函数名”
...
<p>显示数字{{num}}</p>
// 在vue事件中,可以直接访问data中的数据,一旦data中数据改变就会自动更新到视图中
<button v-on:click="num=100">+1</button>
<button v-on:click="add">+1</button>
<button v-on:click="updata(5)">+</button>
...
<script>
export default {
data(){
return{
num:1
}
},
methods:{ //vue方法定义在methods属性中
add(){
this.num++; //通过this访问data中的数据
},
updata(count){
if(num>50){
this.num+= count;
}else{
this.num++;
}
}
}
}
</script>
...
4.事件对象 e
- 无传参,e
- 有传参,一定要同时传递$event
...
<a :href="link" @click="one">链接呢</a>
<hr>
<a :href="link" @click="two(2,$event)">链接</a>
...
methods: {
one(e){
e.preventDefault();
},
two(x,e){
e.preventDefault();
}
}
...
5.事件修饰符
语法:@事件名.修饰符=“methods里函数”
- .stop -阻止事件冒泡
- .prevent -阻止默认行为(表单提交)
- .once -程序运行期间, 只触发一次事件处理函数
6.按键修饰符
语法:@事件名.修饰符=“methods里函数”
- @keyup.enter - 监测回车按键
- @keyup.esc - 监测返回按键
- @keyup.13 - 监听ascll值为13的按键事件
7.v-model双向绑定
- 语法:v-model=“data里的数据名”
- 实现双向数据绑定 :数据变化 -> 视图自动同步;视图变化 -> 数据自动同步。
...
<p>下拉菜单---------------------------------------</p>
<select v-model="city">
<option value="南京">南京</option>
<option value="湖南">湖南</option>
<option value="四川">四川</option>
</select>
<p>复选框---------------------------------------</p>
<input type="checkbox" v-model="checkipt" value="舞蹈" />舞蹈
<input type="checkbox" v-model="checkipt" value="瑜伽" />瑜伽
<input type="checkbox" v-model="checkipt" value="吃零食" />吃零食
<p>单选框---------------------------------------</p>
<input type="radio" v-model="radioipt" value="女" />女
<input type="radio" v-model="radioipt" value="男" />男
...
data() {
return {
radioipt:'女',
checkipt: [],
city: "四川" //设置为和value相同的值,会默认选中
};
...
【注意】:
①下拉菜单要绑定在select上。
② 遇到复选框, v-model的变量值为非数组 - 关联的是复选框的checked属性,数组 - 关联的是复选框的value属性。
③单选框可以在数据里设置默认选中,数据值=value值。
8.v-model修饰符
语法:v-model.修饰符=“methods里函数或数据”
- .number -转成数值类型(使用的是oninput事件,数据一更新就同步)
- .trim -去除左右两边空格后把值赋予给vue数据变量
- .lazy -失去焦点后,再同步数据(使用的是onblur失去焦点事件)
9.v-text和v-html指令
- 语法:
- v-text=“vue数据变量”
- v-html=“vue数据变量”
【注意】:会覆盖差值表达式
...
<p>{{msg}}</p> //不覆盖标签内原有内容
<p v-text="msg"></p> //无法识别html标签
<p v-html="msg"></p> //识别html标签
<p v-html="msg">{{msg}}</p> //覆盖标签内容
...
data(){
return{
msg:"<p>标签语法<p>"
}
...
10.v-show和v-if指令
- 语法:
v-show=“vue变量” :通过display属性来控制显示与隐藏
v-if=“vue变量” - 作用:标签的隐藏与显示
11.v-for循环列表
作用:渲染列表
语法:
== v-for="(值, 索引) in 目标结构"==渲染列表+删除功能
...
<ul>
<li @click="del(obj.id)" v-for="obj in arr" :key="obj.id">{{obj.name}}</li>
</ul>
...
data(){
return{
arr:[{
id:1,
name:"安迪",
},{
id:2,
name:"奥安",
},{
id:3,
name:"关关",
}]
}
},
methods:{
del(delid){
// 获取数组的下标 根据findindex方法
let index = this.arr.findIndex(e=>e.id == delid);
index>-1 && this.arr.splice(index,1);
}
}
12.动态class
- 语法::class="{类名: 布尔值}"
- 目标: 用v-bind给标签class设置动态的值,就是把类名保存在vue变量中赋予给标签
...
// 如果价格超过100,就有red这个类
<td :class="{red:obj.price>100}">{{ obj.price }}</td>
...
13.动态style
- 语法::style="{css属性: 值}"
- 目标: 给标签动态设置style的值
<p :style="{backgroundColor: colorStr}">动态style</p>
版权声明:本文为qq_43483403原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。