在Web開發(fā)中,select元素是非常常見的,它提供了一種方便的方式來(lái)選擇一些預(yù)定義的值或進(jìn)行單選或多選操作。而有時(shí)候,需要根據(jù)特定的業(yè)務(wù)需求來(lái)動(dòng)態(tài)地禁用或啟用select元素,比如下單時(shí)的地址選擇,當(dāng)用戶選擇了省份時(shí)才啟用城市選擇。
基于Vue 的響應(yīng)式的特點(diǎn),動(dòng)態(tài)禁用select元素是非常簡(jiǎn)單的:
<template>
<div>
<select v-model="selectedProvince" @change="changeProvince">
<option v-for="province in provinces" :key="province">{{ province }}</option>
</select>
<select v-model="selectedCity" :disabled="!enableCity" @change="changeCity">
<option v-for="city in cities" :key="city">{ { city } }</option>
</select>
</div>
</template>
<script>
export default {
data() {
return {
provinces: [ '北京市', '上海市', '廣東省' ],
cities: [],
selectedProvince: '',
selectedCity: '',
enableCity: false,
};
},
methods: {
changeProvince() {
if (this.selectedProvince === '廣東省') {
this.cities = [ '廣州市', '深圳市', '珠海市' ];
this.selectedCity = this.cities[0];
this.enableCity = true;
} else {
this.cities = [];
this.selectedCity = '';
this.enableCity = false;
}
},
changeCity() {
console.log(this.selectedCity);
},
},
};
</script>
在這段代碼中,有兩個(gè)select元素,第一個(gè)選擇省份,第二個(gè)選擇城市。初始時(shí),城市選擇框是被禁用的,只有當(dāng)選擇的省份為廣東省時(shí),才會(huì)根據(jù)該省份創(chuàng)建一個(gè)城市列表并啟用城市選擇框。
在Vue中,只要將select的disabled屬性綁定到響應(yīng)式數(shù)據(jù)enableCity上即可。在數(shù)據(jù)變化時(shí),select元素的狀態(tài)會(huì)自動(dòng)更新。同時(shí),在methods中定義兩個(gè)函數(shù),一個(gè)是關(guān)聯(lián)省份變化的changeProvince函數(shù),另一個(gè)是關(guān)聯(lián)城市變化的changeCity函數(shù)。在changeProvince函數(shù)中,當(dāng)選擇的省份是廣東省時(shí),城市列表會(huì)隨之更新并啟用城市選擇框,否則城市列表會(huì)清空并禁用選擇框。
綜上,由于Vue具有響應(yīng)式的特性,動(dòng)態(tài)禁用select元素非常簡(jiǎn)單,只需要將disabled屬性綁定到響應(yīng)式數(shù)據(jù)上,而該響應(yīng)式數(shù)據(jù)在業(yè)務(wù)邏輯中進(jìn)行適當(dāng)?shù)母录纯伞?/p>