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

Vant picker 多級聯(lián)動(dòng)操作

 更新時(shí)間:2020年11月02日 14:28:44   作者:Posden  
這篇文章主要介紹了Vant picker 多級聯(lián)動(dòng)操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

官網(wǎng)地址:鏈接

官網(wǎng)文檔可能不是很完善,但仔細(xì)看文檔,方法,類型其實(shí)都講到的。

度娘也沒有找到,花了大半天爬坑試錯(cuò)。

搭配彈出層使用

<van-field readonly clickable placeholder="選擇城市" :value="station" @click="showPicker = true" />

<van-popup v-model="showPicker" position="bottom">
<van-picker show-toolbar :columns="columns" @cancel="showPicker = false" @confirm="onConfirm" @change="onChange" />
</van-popup>
const citys = [ // 我們習(xí)慣的格式。 可以后臺給你出,如果你打不過的話,你就。。。
 {
  text: "測試一", // 默認(rèn)識別text標(biāo)簽
  id: 1,
  children: [
   {
    id: 11,
    text: "測試1-1",
    children: [
     {
      id: 111,
      text: "測試1-1-1"
     },
     {
      id: 112,
      text: "測試1-1-2"
     }
    ]
   },
   {
    id: 12,
    text: "測試1-2",
    children: [
     {
      id: 122,
      text: "測試1-2-1"
     },
     {
      id: 122,
      text: "測試1-2-2"
     }
    ]
   },
   {
    id: 13,
    text: "測試1-3"
   }
  ]
 },
 {
  text: "測試二",
  id: 2,
  children: [
   {
    id: 21,
    text: "測試2",
    children: [
     {
      id: 221,
      text: "測試2-2-1"
     },
     {
      id: 222,
      text: "測試2-2-2"
     }
    ]
   },
   {
    id: 22,
    text: "測試2"
   },
   {
    id: 23,
    text: "測試2"
   }
  ]
 },
 {
  text: "測試三",
  id: 3,
  children: [
   {
    id: 31,
    text: "測試3",
    children: [
     {
      id: 311,
      text: "測試3-1-1"
     },
     {
      id: 312,
      text: "測試3-3-2"
     }
    ]
   },
   {
    id: 32,
    text: "測試3"
   },
   {
    id: 33,
    text: "測試3"
   }
  ]
 }
];

 data(){
  return {
   station: "",
   showPicker: false,
   columns: [
    {
     values: citys, // 設(shè)置的頁面初始值
     className: "column1"
    },
    {
     values: citys[0].children,
     className: "column2"
    },
    {
     values: citys[0].children[0].children,
     className: "column3"
    }
   ],
 } 
 }; 

  onConfirm(value) {
   const compact = arr => arr.filter(Boolean); // 三級聯(lián)動(dòng) 去除沒值的,比如只有兩級
   const result = compact(value);
   let str = ""; // 呈現(xiàn)頁面顯示 /xxx/xxx/xxx
   result.forEach(item => {
    str += "/" + item.text;
   });
   this.station = str;
   this.showPicker = false;
   
  const end = result[result.length - 1]; // 一般都是取最后一個(gè)id給后臺的
   const id = end.id;
   console.log(id);
  },
  onChange(picker, values, index) { // 實(shí)在不行自己打印測試
   if (index == 0) {
    picker.setColumnValues(2, []); // 防止突然選中第一個(gè),第二個(gè)是更新的,但第三個(gè)聯(lián)級不更新,我暫時(shí)強(qiáng)制清空
   }
   let ColumnIndex = picker.getColumnIndex(index);
   console.log("第" + index + "列", "第" + ColumnIndex + "個(gè)");
   picker.setColumnValues(index + 1, values[ColumnIndex ].children || []);//點(diǎn)當(dāng)前列更新下一列數(shù)據(jù),防止undefined 
   
 // 當(dāng)然,如果后臺數(shù)據(jù)不給你想要的格式,你就按需請求一次了,比如選中第一個(gè),取id請求接口,更新下一列。畢竟連動(dòng)內(nèi)容多的話,頁面請求也多。但頁面就不流暢,比如第一列第二列初始值。 
  // 我就是打不過后臺。。。
  }

補(bǔ)充知識:【vant】配合 van-popup 使用 van-picker 多級聯(lián)動(dòng),回顯賦默認(rèn)值 遇到的坑及解決方案

先吐槽一句,van-picker 真心不怎么好用。。。

頁面大概是這個(gè)樣子:

代碼結(jié)構(gòu)大概是這個(gè)樣子:

<!-- 選擇 收支類型彈窗 -->
<van-popup ref = "accountTypePopup" v-model="showPicker" position="bottom">
  <van-picker
    ref = "accountTypePopup2"
    show-toolbar
    :columns="columns"
    @cancel="showPicker = false"
    @confirm="onConfirm"
    @change="onChange"
    
  />
</van-popup>
methods: {
  // ...
  // 修改 columns 方法
  changeColumns(p_name, name) {
    // p_name 一級分類回顯值
    // name 二級分類回顯值
    
    // 類型列表
    var typeList =
      this.tabActive === 0
        ? this.expendTypeList
        : this.incomeTypeList;
 
    // 設(shè)置 收支類型選項(xiàng) columns 的默認(rèn)值 和 子選項(xiàng)
    this.columns[0]["defaultIndex"] = this.columns[0][
      "values"
    ].findIndex(item => item === p_name);
 
    this.columns[1]["values"] = typeList[p_name];
 
    this.columns[1]["defaultIndex"] = this.columns[1][
      "values"
    ].findIndex(item => item === name);
  }
}

期望是:popup彈出后,picker選中用戶已經(jīng)選中的選項(xiàng)

結(jié)果是:僅第一次popup彈出后,picker選中用戶已經(jīng)選中的選項(xiàng),之后的彈出一直展示第一次的列表

查看文檔,解決方案是用van-picker的方法:

坑就坑中,組件嵌套(popup套picker),用ref獲取不到 picker 實(shí)例

咋整?

用調(diào)試工具調(diào)試了半天發(fā)現(xiàn),picker實(shí)例化成DOM元素后,即使隱藏,也僅僅是display:none,不會(huì)重新實(shí)例化

那就好辦了。。。

<!-- 選擇 收支類型彈窗 -->
<van-popup ref = "accountTypePopup" v-model="showPicker" position="bottom">
  <van-picker
    ref = "accountTypePopup2"
    show-toolbar
    :columns="columns"
    @cancel="showPicker = false"
    @confirm="onConfirm"
    @change="onChange"
 
    // 這里是新加的 //
    :key = "account_type_value"
    
  />
</van-popup>

添加一個(gè)key屬性,值為【一級項(xiàng)+二級項(xiàng)】,問題圓滿解決?。?!

以上這篇Vant picker 多級聯(lián)動(dòng)操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue3的provide和inject實(shí)現(xiàn)多級傳遞的原理解析

    Vue3的provide和inject實(shí)現(xiàn)多級傳遞的原理解析

    Vue3中的provide和inject函數(shù)通過原型鏈實(shí)現(xiàn)數(shù)據(jù)的多級傳遞,父組件使用provide注入數(shù)據(jù),子組件和后代組件通過inject獲取這些數(shù)據(jù),在創(chuàng)建組件實(shí)例時(shí),子組件會(huì)繼承父組件的provides屬性對象,介紹Vue3的provide和inject實(shí)現(xiàn)多級傳遞的原理,需要的朋友可以參考下
    2024-12-12
  • 淺談Vue開發(fā)人員的7個(gè)最好的VSCode擴(kuò)展

    淺談Vue開發(fā)人員的7個(gè)最好的VSCode擴(kuò)展

    這篇文章主要介紹了淺談Vue開發(fā)人員的7個(gè)最好的VSCode擴(kuò)展,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • vue中使用elementUI自定義校驗(yàn)及點(diǎn)擊提交不生效問題解決辦法

    vue中使用elementUI自定義校驗(yàn)及點(diǎn)擊提交不生效問題解決辦法

    我們在項(xiàng)目中經(jīng)常會(huì)用到ElementUI的表單驗(yàn)證,下面這篇文章主要給大家介紹了關(guān)于vue中使用elementUI自定義校驗(yàn)及點(diǎn)擊提交不生效問題解決的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • vue中的Router基本配置命令實(shí)例詳解

    vue中的Router基本配置命令實(shí)例詳解

    Vue的Router是一個(gè)用于實(shí)現(xiàn)頁面跳轉(zhuǎn)和路由管理的插件,它可以幫助我們根據(jù)不同的URL請求加載不同的組件,以及實(shí)現(xiàn)前端路由功能,本文給大家介紹vue中的Router基本配置命令,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • 在vue中使用Echarts畫曲線圖的示例

    在vue中使用Echarts畫曲線圖的示例

    這篇文章主要介紹了在vue中使用Echarts畫曲線圖的示例,幫助大家在vue中繪制圖表,感興趣的朋友可以了解下
    2020-10-10
  • Vue2.0子同級組件之間數(shù)據(jù)交互方法

    Vue2.0子同級組件之間數(shù)據(jù)交互方法

    下面小編就為大家分享一篇Vue2.0子同級組件之間數(shù)據(jù)交互方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • Vue2.0結(jié)合webuploader實(shí)現(xiàn)文件分片上傳功能

    Vue2.0結(jié)合webuploader實(shí)現(xiàn)文件分片上傳功能

    這篇文章主要介紹了Vue2.0結(jié)合webuploader實(shí)現(xiàn)文件分片上傳功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-03-03
  • 利用vant如何給tabbar配置路由

    利用vant如何給tabbar配置路由

    這篇文章主要介紹了利用vant如何給tabbar配置路由,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 詳解auto-vue-file:一個(gè)自動(dòng)創(chuàng)建vue組件的包

    詳解auto-vue-file:一個(gè)自動(dòng)創(chuàng)建vue組件的包

    這篇文章主要介紹了auto-vue-file:一個(gè)自動(dòng)創(chuàng)建vue組件的包,需要的朋友可以參考下
    2019-04-04
  • vue實(shí)現(xiàn)無縫滾動(dòng)的示例詳解

    vue實(shí)現(xiàn)無縫滾動(dòng)的示例詳解

    這篇文章主要為大家詳細(xì)介紹了vue非組件如何實(shí)現(xiàn)列表的無縫滾動(dòng)效果,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-09-09

最新評論

沛县| 台北市| 应城市| 突泉县| 盐边县| 海林市| 罗平县| 庆阳市| 太仓市| 庆云县| 永靖县| 元朗区| 西乡县| 墨江| 卓资县| 建湖县| 黎川县| 石屏县| 林芝县| 云阳县| 吉安市| 安达市| 明星| 琼结县| 稻城县| 昌乐县| 凉城县| 云南省| 怀远县| 津南区| 马边| 比如县| 新建县| 乡宁县| 柏乡县| 昌江| 巴里| 抚宁县| 扶绥县| 无为县| 年辖:市辖区|