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

關于VanCascader默認值(地址code轉換)

 更新時間:2024年07月02日 09:11:09   作者:不是LIsa.  
這篇文章主要介紹了關于VanCascader默認值(地址code轉換),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

VanCascader默認值(地址code轉換)

我在使用VanCascader的時候,發(fā)現(xiàn)頁面刷新進入時組件沒有默認值,提示的是placeholder“請輸入地址”

我希望進去時顯示我傳入的值

如:

  • “湖北省武漢市洪山區(qū)”,(code:110101)
  • 一般傳入的是code值,故希望兩者轉化

話不多說上代碼:

<script lang="ts" setup>
import { useCascaderAreaData } from '@vant/area-data'
import type { CascaderOption } from 'vant'
 
const props = defineProps<{
  modelValue: string
}>()
const emit = defineEmits<{
  (e: 'update:modelValue', v: string): void
}>()
 
const show = ref(false)
 
interface OptionWithParents {
  option: CascaderOption | null
  parent: CascaderOption | null
  grandparent: CascaderOption | null
}
 
function findOptionWithParents(options: CascaderOption[], targetValue: string, parent: CascaderOption | null, grandparent: CascaderOption | null): OptionWithParents | null {
  for (const option of options) {
    if (option.value === targetValue)
      return { option, parent, grandparent }
 
    if (option.children && option.children.length > 0) {
      const result = findOptionWithParents(option.children, targetValue, option, parent)
      if (result)
        return result
    }
  }
  return null
}
 
function getLabelByValue(options: CascaderOption[], targetValue: string) {
  const { option, parent, grandparent } = findOptionWithParents(options, targetValue, null, null)
  if (option && parent && grandparent)
    return [grandparent.text, parent.text, option.text].join('/')
  return ''
}
 
const fieldValue = ref(props.modelValue)
const options = useCascaderAreaData()
 
function onFinish({ selectedOptions, value }: { selectedOptions: CascaderOption[]; value: string }) {
  show.value = false
  fieldValue.value = selectedOptions.map(option => option.text).join('/')
  emit('update:modelValue', value)
}
nextTick(() => {
  fieldValue.value = getLabelByValue(options, props.modelValue)
})
</script>
<template>
  <van-field
    :model-value="fieldValue"
    is-link
    readonly
    label="所在地區(qū)"
    placeholder="選擇地區(qū)"
    @click="show = true"
  />
  <van-popup v-model:show="show" round position="bottom">
    <van-cascader
      :model-value="modelValue"
      title="請選擇所在地區(qū)"
      :options="options"
      @close="show = false"
      @finish="onFinish"
    />
  </van-popup>
</template>

接下來就是運行結果圖:

點擊編輯,進入地址編輯頁面,

如下圖所示:

有默認值:

  • 北京市/北京市/西城區(qū)了。

代碼說明:

  • 使用findOptionWithParents()獲取你傳入的modelValue值(如:”110101“)
  • 獲取你所需要得到的option選項(’東城區(qū)‘)
  • 根據(jù)option獲取父級(’北京市‘)
  • 父級的父級(’北京市‘),再根據(jù)join()拼接

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Vue 3 中使用 Element Plus 的 `el-table` 組件實現(xiàn)自適應高度

    Vue 3 中使用 Element Plus 的 `el-t

    在 Vue 3 中使用 Element Plus 的 `el-table` 組件實現(xiàn)自適應高度,你可以根據(jù)容器的高度動態(tài)設置表格的高度,下面通過示例代碼給大家展示,感興趣的朋友一起看看吧
    2024-12-12
  • vue?watch監(jiān)聽方法總結

    vue?watch監(jiān)聽方法總結

    這篇文章主要給大家分享的是vue?watch監(jiān)聽方法總結,偵聽器一般來說是用來監(jiān)聽數(shù)據(jù)的變化,默認是在數(shù)據(jù)發(fā)生變化時執(zhí)行。監(jiān)聽的數(shù)據(jù)名放到這里面作為函數(shù)名,這個函數(shù)里面有兩個參數(shù),一個是新值,一個是舊值。下面我們就一起進入文章了解更具體的內(nèi)容吧
    2021-12-12
  • vue+echarts實現(xiàn)動態(tài)折線圖的方法與注意

    vue+echarts實現(xiàn)動態(tài)折線圖的方法與注意

    這篇文章主要給大家介紹了關于vue+echarts實現(xiàn)動態(tài)折線圖的方法與注意事項,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • vue+vant移動端顯示table表格加橫向滾動條效果

    vue+vant移動端顯示table表格加橫向滾動條效果

    vant移動端顯示table效果,增加復選框,可以進行多選和全選,加橫向滾動條,可以看全部內(nèi)容,下面通過本文給大家分享vue+vant移動端顯示table表格加橫向滾動條效果,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • vue3中虛擬dom的介紹與使用詳解

    vue3中虛擬dom的介紹與使用詳解

    Vue?是如何將一份模板轉換為真實的?DOM?節(jié)點的,又是如何高效地更新這些節(jié)點的呢,這些都離不開虛擬dom這個概念,下面我們就來了解下虛擬dom這個概念以及它是什么吧
    2024-01-01
  • Vue集成百度地圖實現(xiàn)位置選擇功能

    Vue集成百度地圖實現(xiàn)位置選擇功能

    由于添加門店時,需要選擇門店的省、市、區(qū)、詳細地址、以及門店的經(jīng)緯度信息,本文給大家分享Vue集成百度地圖實現(xiàn)位置選擇功能,感興趣的朋友一起看看吧
    2022-06-06
  • 構建大型 Vue.js 項目的10條建議(小結)

    構建大型 Vue.js 項目的10條建議(小結)

    這篇文章主要介紹了構建大型 Vue.js 項目的10條建議(小結),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • vue+element實現(xiàn)動態(tài)加載表單

    vue+element實現(xiàn)動態(tài)加載表單

    這篇文章主要為大家詳細介紹了vue+element實現(xiàn)動態(tài)加載表單,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • 在vue項目中使用Nprogress.js進度條的方法

    在vue項目中使用Nprogress.js進度條的方法

    NProgress.js是輕量級的進度條組件,使用簡便,可以很方便集成到單頁面應用中。這篇文章主要介紹了在vue項目中使用Nprogress.js進度條的方法,需要的朋友可以參考下
    2018-01-01
  • vue中el-tree結合el-switch實現(xiàn)開關狀態(tài)切換

    vue中el-tree結合el-switch實現(xiàn)開關狀態(tài)切換

    本文主要介紹了vue中el-tree結合el-switch實現(xiàn)開關狀態(tài)切換,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-12-12

最新評論

调兵山市| 红桥区| 屏南县| 娄底市| 嘉禾县| 忻城县| 封开县| 六盘水市| 原阳县| 昌乐县| 安图县| 彩票| 聂荣县| 嘉兴市| 筠连县| 台中市| 绥滨县| 从江县| 陈巴尔虎旗| 江口县| 阳春市| 永兴县| 巨野县| 柯坪县| 和田县| 治多县| 永登县| 玉树县| 康定县| 大田县| 襄垣县| 呈贡县| 余干县| 石景山区| 策勒县| 濮阳县| 依安县| 留坝县| 孟州市| 庄浪县| 呼伦贝尔市|