在使用 Bootstrap 會用到 Navbar 選單,做到動態選單時候會用到 isActive,要怎麼透過 Vue 綁定到 class 上面?照官方實作可以簡單完成。
需求解法
1
2
3
4
5
6
|
<li class="nav-item">
<a class="nav-link" :class="{active: mode === 'edit'}" aria-current="page" href="javascript:;" @click="mode = 'edit'">編輯</a>
</li>
<li class="nav-item">
<a class="nav-link" :class="{active: mode === 'result'}" href="javascript:;" @click="mode = 'result'">結果</a>
</li>
|
1
2
3
4
5
6
|
export default {
data(){
return {
mode: 'edit',
}
},
|
綁定 HTML Class
物件語法
1
|
<div :class="{ active: isActive }"></div>
|
靜態與動態 Class 結合
1
2
3
4
|
<div
class="static"
:class="{ active: isActive, 'text-danger': hasError }"
></div>
|
1
2
3
4
5
6
|
data() {
return {
isActive: true,
hasError: false
}
}
|
結果
1
|
<div class="static active"></div>
|
搭配 computed
1
|
<div :class="classObject"></div>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
data() {
return {
isActive: true,
error: null
}
},
computed: {
classObject() {
return {
active: this.isActive && !this.error,
'text-danger': this.error && this.error.type === 'fatal'
}
}
}
|
陣列語法
1
|
<div :class="[activeClass, errorClass]"></div>
|
1
2
3
4
5
6
|
data() {
return {
activeClass: 'active',
errorClass: 'text-danger'
}
}
|
result:
1
|
<div class="active text-danger"></div>
|
在組件上使用
還滿特別的,建議去看官方文件範例:Class 与 Style 绑定 - 在組件上使用 | Vue.js