最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Uni-App用uView組件庫中u-picker實(shí)現(xiàn)地區(qū)的省-市-區(qū)三級(jí)聯(lián)動(dòng)、確認(rèn)及回顯

 更新時(shí)間:2023年12月15日 11:32:34   作者:不停喝水  
最近項(xiàng)目要使用uni-app遇到省市縣三級(jí)聯(lián)動(dòng)的問題,下面這篇文章主要給大家介紹了關(guān)于Uni-App用uView組件庫中u-picker實(shí)現(xiàn)地區(qū)的省-市-區(qū)三級(jí)聯(lián)動(dòng)、確認(rèn)及回顯的相關(guān)資料,需要的朋友可以參考下

一:準(zhǔn)備工作

組件的引入就不多贅述了 直接看使用方法

二:json文件數(shù)據(jù)

地址我是引入的json文件數(shù)據(jù)結(jié)構(gòu)大概是這個(gè)樣子

例1

例2

三:先做個(gè)按鈕做彈窗顯示

做個(gè)動(dòng)態(tài)style,控制是否高亮地址

<u-form-item label="地區(qū)" :border-bottom="false">
    <u-cell :border="false">
       <view slot="right-icon" @tap="showLocal = true">
         <text :style="{ color: local.length ? '#333' : '#c0c4cc' }">{{ local === '' ? '選擇省/市/區(qū)' : local }}</text>
       </view>
     </u-cell>
 </u-form-item>

四:使用組件

 <u-picker
      @cancel="showLocal = false"
      @close="showLocal = false"
      :show="showLocal"
      :columns="addressColumns"
      @confirm="localConfirm"
      title="請(qǐng)選擇所在地"
      keyName="name"
      itemHeight="80"
      closeOnClickOverlay
      ref="uPicker"
      @change="changeHandler"
      :defaultIndex="defaultAddress"
      immediateChange
    ></u-picker>

五:用到的變量

import areas from '@/utils/areas.json'//引入原始數(shù)據(jù)
  export default {
  data(){
	return {
			 local: '', //區(qū)域
			localCode: '', //這個(gè)變量看個(gè)人需求使用
	        showLocal: false,   //是否展示彈出層
	        addressColumns: [], //數(shù)據(jù)數(shù)組
	        defaultAddress: [],  //默認(rèn)選中 (回填時(shí)或者初次顯示默認(rèn)選中)
	        addressData: areas,  //原始數(shù)據(jù) (引入的json文件)
		}
	}    
}

六:初始化數(shù)據(jù)

   onShow() {
    //省的數(shù)組
      const provinceData = areas.map(e => {
        return { name: e.name, code: e.code }//這里可以直接return e.name  這里我是要用到code所以才用對(duì)象包起來的 下面的市 區(qū) 也一樣
      })
//市的數(shù)組
      const cityData = areas.map(e => {
        const arr = []
        arr.push(
          e.areas.map(c => {
            return { name: c.name, code: c.code }
             
          })
        )
        return arr
      })
//區(qū)的數(shù)組
      const areaData = areas.map(e => {
        const arr = []
        arr.push(
          e.areas.map(c =>
            c.areas.map(d => {
              return { name: d.name, code: d.code }
            })
          )
        )
        return arr
      })
      const arr = [provinceData, cityData[0][0], areaData[0][0][0]]
      this.addressColumns = arr    //將得到的3個(gè)數(shù)組 的第一個(gè)市的所有數(shù)據(jù)賦值 作為初始數(shù)據(jù)
    
    },

七:數(shù)據(jù)變更時(shí)的方法

 changeHandler(e) {
//分別表示選中的列 , 該列的第幾個(gè),選中的3列的第幾個(gè)的數(shù)組,組件本身
        const { columnIndex, index, indexs, picker = this.$refs.uPicker } = e
       //如果改變的是第一列
        if (columnIndex === 0) {
          const children1 = this.addressData[index].areas.map(e => {
            return { name: e.name, code: e.code }
          })
          picker.setColumnValues(1, children1)
//更換 第二列數(shù)據(jù)
          const children2 = this.addressData[index].areas[indexs[1]].areas.map(e => {
            return { name: e.name, code: e.code }
          })
          picker.setColumnValues(2, children2)
//更換 第三列數(shù)據(jù)
        }
        if (columnIndex === 1) {
//如果改變的是第二列
          const children3 = this.addressData[indexs[0]].areas[indexs[1]].areas.map(e => {
            return { name: e.name, code: e.code }
          })
          picker.setColumnValues(2, children3)
//更換 第三列數(shù)據(jù)
        }
      },

八:點(diǎn)擊確認(rèn)時(shí)的方法

    localConfirm(e) {
//顯而易見 不多贅述
        this.local = `${e.value[0].name}-${e.value[1].name}-${e.value[2].name}`
        this.localCode = `${e.value[0].code}-${e.value[1].code}-${e.value[2].code}`
        this.showLocal = false

      },

九:數(shù)據(jù)的回填

//已經(jīng)知道了 this.local ='省-市-區(qū)'初始彈窗時(shí)默認(rèn)選中改值

     backfill(temp) {
        temp = item.area.split('-')
        let index,
          index1,
          index2 = 0
        let arr,
          arr1,
          arr2 = []
//匹配省市區(qū)對(duì)應(yīng)每列的第幾個(gè)
        this.addressData.forEach((item, i) => {
          if (item.name == temp[0]) {
            index = i
            item.children.forEach((val, ind) => {
              if (val.name == temp[1]) {
                index1 = ind
                val.children.forEach((e, n) => {
                  if (e.name == temp[2]) {
                    index2 = n
                  }
                })
              }
            })
          }
        })
        arr = this.addressData.map(e => {
          return { name: e.name, code: e.code }
        })
        arr1 = this.addressData[index].children.map(e => {
          return { name: e.name, code: e.code }
        })
        arr2 = this.addressData[index].children[index1].children.map(e => {
          return { name: e.name, code: e.code }
        })
//反推出3列的數(shù)組數(shù)據(jù)
        this.addressColumns = [arr, arr1, arr2]
// 賦值給 默認(rèn)初始選中 
        this.defaultAddress = [index, index1, index2]
      }

這是選中效果

這是其中的json文件

鏈接: https://pan.baidu.com/s/1q8Qr-4FRXdhlGP0JkU9MJg
提取碼: gwtr 

總結(jié) 

到此這篇關(guān)于Uni-App用uView組件庫中u-picker實(shí)現(xiàn)地區(qū)的省-市-區(qū)三級(jí)聯(lián)動(dòng)、確認(rèn)及回顯的文章就介紹到這了,更多相關(guān)UniApp u-picker地區(qū)省市區(qū)三級(jí)聯(lián)動(dòng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

清徐县| 额济纳旗| 四平市| 阿合奇县| 定结县| 汽车| 宁陕县| 双辽市| 盐山县| 蛟河市| 瓦房店市| 双城市| 沽源县| 青海省| 辽中县| 新源县| 始兴县| 河池市| 万山特区| 祁阳县| 大田县| 墨脱县| 澎湖县| 马鞍山市| 肇源县| 攀枝花市| 元氏县| 玛曲县| 新化县| 琼海市| 盘锦市| 江孜县| 台中县| 肥西县| 屯门区| 涡阳县| 麻江县| 许昌县| 丹巴县| 呼伦贝尔市| 宁强县|