日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Vue組件開發(fā):多級聯(lián)動選擇器實(shí)現(xiàn)

在前端開發(fā)中,多級聯(lián)動選擇器是一個常見的需求,比如省市區(qū)選擇、年月日選擇等。本文將介紹如何使用Vue組件實(shí)現(xiàn)多級聯(lián)動選擇器,并附有具體的代碼實(shí)現(xiàn)示例。

如何實(shí)現(xiàn)多級聯(lián)動選擇器?

實(shí)現(xiàn)多級聯(lián)動選擇器需要用到Vue的組件化開發(fā)思想,將一個大的選擇器拆分為若干個子組件,分別負(fù)責(zé)渲染每一個級別的選項。在每次級別的選擇變化時,都要更新后續(xù)級別的選項,這就需要用到Vue組件之間的通信機(jī)制。

另外,選擇器需要從外部接收初始值,并在選擇發(fā)生變化時向外部發(fā)出事件通知。這可以使用props和$emit實(shí)現(xiàn)。

下面我們來逐步實(shí)現(xiàn)這個多級聯(lián)動選擇器組件。

第一步:定義子組件

我們先定義每個級別的選擇器子組件。以下是一個簡單的省份選擇器的子組件的代碼:

<template>
  <select v-model="selected">
    <option value="">請選擇</option>
    <option v-for="item in options" :value="item">{{ item }}</option>
  </select>
</template>

<script>
export default {
  props: {
    options: {
      type: Array,
      required: true
    },
    value: {
      type: String,
      default: ''
    }
  },
  data() {
    return {
      selected: this.value
    }
  },
  watch: {
    selected(newValue) {
      this.$emit('change', newValue)
    }
  }
}
</script>

登錄后復(fù)制

代碼解釋:

使用select標(biāo)簽渲染下拉選項框,并使用v-model綁定當(dāng)前選項的值;使用v-for遍歷父組件傳入的options,動態(tài)生成option列表;使用props接收父組件傳入的options和value(當(dāng)前選中項的值),并通過data()初始化selected值;使用watch監(jiān)聽selected值變化,當(dāng)選項變化時發(fā)出change事件,向父組件通知新的選擇值。

第二步:定義父組件

接下來,我們定義多級聯(lián)動選擇器的父組件。該組件負(fù)責(zé)渲染所有子組件,并在選項變化時更新后續(xù)子組件的選項。

以下是一個簡單的兩級聯(lián)動選擇器的代碼:

<template>
  <div>
    <CitySelect :options="provinces" v-model="selectedProvince"/>
    <CitySelect :options="cities" v-model="selectedCity"/>
  </div>
</template>

<script>
import CitySelect from './CitySelect.vue'

export default {
  components: {
    CitySelect
  },
  data() {
    return {
      provinces: ['廣東', '江蘇', '浙江'],
      cities: {
        '廣東': ['廣州', '深圳'],
        '江蘇': ['南京', '蘇州'],
        '浙江': ['杭州', '寧波']
      },
      selectedProvince: '',
      selectedCity: ''
    }
  },
  watch: {
    selectedProvince(newValue) {
      this.selectedCity = ''
      if (newValue) {
        this.cities = this.$data.cities[newValue]
      } else {
        this.cities = []
      }
    }
  }
}
</script>

登錄后復(fù)制

代碼解釋:

在template中使用兩個CitySelect子組件,分別渲染省和市的選擇框,通過v-model綁定當(dāng)前選中的省份和城市;在data函數(shù)中定義provinces和cities兩個數(shù)組,provinces數(shù)組儲存所有的省份,cities對象儲存所有的城市,使用selectedProvince和selectedCity記錄當(dāng)前選中的省份和城市;在watch中監(jiān)聽selectedProvince的變化,當(dāng)省份變化時更新cities數(shù)組,用于渲染下一級城市選擇框。

第三步:組合所有子組件

我們已經(jīng)定義好所有的子組件和父組件后,只需將所有子組件組合起來,就可以形成一個完整的多級聯(lián)動選擇器了。

以下是一個簡單的三級聯(lián)動選擇器的代碼:

<template>
  <div>
    <RegionSelect :options="provinces" v-model="selectedProvince"/>
    <RegionSelect :options="cities" v-model="selectedCity"/>
    <RegionSelect :options="districts" v-model="selectedDistrict"/>
  </div>
</template>

<script>
import RegionSelect from './RegionSelect.vue'

export default {
  components: {
    RegionSelect
  },
  data() {
    return {
      provinces: ['廣東', '江蘇', '浙江'],
      cities: {
        '廣東': ['廣州', '深圳'],
        '江蘇': ['南京', '蘇州'],
        '浙江': ['杭州', '寧波']
      },
      districts: {
        '廣州': ['天河區(qū)', '海珠區(qū)'],
        '深圳': ['福田區(qū)', '南山區(qū)'],
        '南京': ['玄武區(qū)', '鼓樓區(qū)'],
        '蘇州': ['姑蘇區(qū)', '相城區(qū)'],
        '杭州': ['上城區(qū)', '下城區(qū)'],
        '寧波': ['江東區(qū)', '江北區(qū)']
      },
      selectedProvince: '',
      selectedCity: '',
      selectedDistrict: ''
    }
  },
  watch: {
    selectedProvince(newValue) {
      if (newValue) {
        this.cities = this.$data.cities[newValue]
        this.selectedCity = ''
        this.districts = []
      } else {
        this.cities = []
        this.districts = []
      }
    },
    selectedCity(newValue) {
      if (newValue) {
        this.districts = this.$data.districts[newValue]
        this.selectedDistrict = ''
      } else {
        this.districts = []
      }
    }
  }
}
</script>

登錄后復(fù)制

代碼解釋:

在template中使用三個RegionSelect子組件,分別渲染省、市和區(qū)的選擇框,通過v-model綁定當(dāng)前選中的省、市和區(qū);在data函數(shù)中定義provinces、cities和districts三個對象,provinces數(shù)組儲存所有的省份,cities對象儲存所有的城市,districts對象儲存所有的區(qū),使用selectedProvince、selectedCity和selectedDistrict記錄當(dāng)前選中的省、市和區(qū);在watch中監(jiān)聽selectedProvince和selectedCity的變化,當(dāng)省份或城市變化時更新后續(xù)選擇框的選項和選中值。

三級聯(lián)動選擇器已經(jīng)完成了!你可以在Vue組件模板中引用該組件,如下所示:

<template>
  <div>
    <RegionSelect v-model="selectedRegion"/>
  </div>
</template>

<script>
import RegionSelect from './RegionSelect.vue'

export default {
  components: {
    RegionSelect
  },
  data() {
    return {
      selectedRegion: ['廣東', '深圳', '南山區(qū)']
    }
  }
}
</script>

登錄后復(fù)制

總結(jié)

本文介紹了如何使用Vue組件實(shí)現(xiàn)多級聯(lián)動選擇器,包括定義子組件和父組件,以及組合所有子組件的過程。通過這個例子,我們可以了解到Vue組件化開發(fā)的基本思想,以及組件之間的通信機(jī)制。當(dāng)然,實(shí)際開發(fā)中還需要考慮更多的細(xì)節(jié),例如異步數(shù)據(jù)獲取、修改子組件自身的樣式等問題,這些內(nèi)容并沒有在本文中涉及。

分享到:
標(biāo)簽:VUE 開發(fā) 組件 聯(lián)動 選擇器
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定