本文最后更新于:2024年4月25日 上午
指令
🥝指令基础
指令以v-
为前缀的属性
指令可以接受一个单句表达式(除了v-for,v-on)
v-???:参数=""
1
| <tag v-on:click="clickFunction"></tag>
|
v-???:[动态参数]=""
1
| <tag v-on:[eventType]="eventFunction"></tag>
|
🥝指令语法糖
v-bind:
等价于:
v-on:
等价于@
🥝指令修饰符
插值
双花括号内输入插值变量(单个js表达式)
1 2
| <tag>{{ msg }}</tag> <tag>{{ (conditions) ? msgT : msgF }}</tag>
|
使用v-once
指令数据只响应一次
1
| <tag v-once>{{ msg }}</tag>
|
使用v-html
指令插入html代码
1
| <tag v-html="htmlCode"></tag>
|
使用v-bind
指令绑定标签属性值
1
| <tag v-bind: title="titleMsg"></tag>
|
data选项
1 2 3 4 5 6
| const app = { data() { return { } } }
|
methods选项
this
指向组件实例
1 2 3 4 5 6 7 8 9 10 11
| const app = { methods: { methodOne(){ }, methodTwo(){ }, } }
|
computed选项
当数据没有变化时返回缓存
watch选项
被侦听数据改变时执行
1 2 3 4 5 6 7 8 9 10 11
| const app = { data() { let msg = 'Jonathan' return { Jonathan } }, watch: { msg(oldMsg, newMsg){ } } }
|
绑定class
用v-bind:class=""
指令来绑定动态class
属性
🥬对象绑定
1
| <tag :class="{ className1 : isTrue1 }"></tag>
|
1 2 3 4
| const app = { let isTrue1 = return { isTrue1 } }
|
可绑定多个类
1
| <tag :class="{ className1 : isTrue1, className2 : isTrue2, ... }"></tag>
|
🥬数组绑定
绑定内联style
vue可自动匹配css前缀
条件渲染
🍉v-if
系列指令
可用v-if
,v-else-if
,v-else
指令来指定不同条件下的显示组件
v-if
初始化不会全部渲染,故初始化开销较小,但频繁切换开销大不适合频繁切换的组件
1 2 3 4 5 6 7 8 9 10 11 12 13
| <div v-if=" ch >= 'a' && ch <= 'z' "> <span>ch是小写字符</span> </div> <div v-else-if=" ch >= 'A' && ch <= 'Z' "> <span>ch是大写字符</span> </div> <div v-else-if=" ch >= '0' && ch <= '9' "> <span>ch是阿拉伯数字</span> </div>
<div v-else> <span>ch既不是字母也不是阿拉伯数字</span> </div>
|
🍉v-show
指令
v-show
会全部渲染后再改变css来条件显示组件
v-show
初始化开销大,适合应用于需频繁切换的组件
1 2 3 4 5 6 7 8 9
| <div v-show=" ch >= 'a' && ch <= 'z' "> <span>ch是小写字符</span> </div> <div v-show=" ch >= 'A' && ch <= 'Z' "> <span>ch是大写字符</span> </div> <div v-show=" ch >= '0' && ch <= '9' "> <span>ch是阿拉伯数字</span> </div>
|
列表渲染
v-for="item in/of items"
指令
🥦遍历正整数
从1开始遍历
1
| <tag v-for="i of n"></tag>
|
🥦遍历数组
可选两个参数(value[值], index[索引])
1
| <tag v-for="(value, index) of ['a', 'b', 'c']">第{{ index }}个元素是{{ value }}</tag>
|
🥦遍历对象
可选三个参数(value[值], key[键名], index[索引])
1
| <tag v-for="(vlaue, key, index) in obj">{{ index }}-{{ key }}:{{ value }}</tag>
|
事件监听
v-on:event="method"
指令绑定事件
1
| <tag v-on:click="count++">{{ count }}</tag>
|
缩写
1
| <tag @click="count++">{{ count }}</tag>
|
绑定多个事件
1
| <tag @click="count++, count *= 2">{{ count }}</tag>
|
🍠事件修饰符
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <a @click.stop="doThis"></a>
<form @submit.prevent="onSubmit"></form>
<a @click.stop.prevent="doThat"></a>
<form @submit.prevent></form>
<div @click.capture="doThis">...</div>
<div @click.self="doThat">...</div>
|
🍠按键修饰符
🍠事件名
表单绑定
v-model
指令实现双向绑定
中文等拼写时不会绑定
1 2 3 4
| <input type="text" v-model="msg" /> <p> Your input is {{ msg }} </p>
|
🥑复选元素
对于复选元素v-model
返回一个数组
🥑修饰符
1 2 3
| v-model.lazy v-model.number v-model.trim
|