vue element Cascader 級聯選擇器 選擇任意一級選項 點擊收起,點擊label選中等問題詳解

最近在做一個功能,要求級聯選擇器,選擇每一級都可以,於是就先看下餓了麼,找了半天發現好像沒有這種,只有級聯選擇最後一級,然後這個又是返回的遞歸的數據,讓我手寫重新寫一個屬實有點浪費時間。

找了好久好久,實現找不到,問了下隔壁的前端老哥,他就來幫我找,也是找了好久沒有找到,後面他看到我 element 版本是 2.0.11
然後把版本切換到最新版,我當時就傻逼了,我特麼頓時感覺自己是哥沙雕,我收藏的網址每次打開的都是那個版本。。。

溫馨提示:Cascader 級聯選擇器 選擇任意一級 請切換到 2.12.0 最新版
在這裏插入圖片描述
然後看了下,果然有我想要的東西。如下圖:
在這裏插入圖片描述
我的實現效果,是不是感覺一摸一樣?
在這裏插入圖片描述
but,特麼這官網這個有兩個問題:

  1. 點擊圓圈後理想是自動收起下拉,但是他這個也沒有 我吐血三分鐘。。。。
  2. 而且只能點擊圓圈才能選中,點擊文字 label 沒有效果,我又吐血三分鐘。。。。

於是,開始了艱辛的百度歷程: 最後依然沒有找到答案,好像很少人用這種,級聯每一級都可以選擇的。。。用得多的就是選中最後一級,像省級聯動之內的

打鐵還需自身硬,只有自己去慢慢看了。後面終於解決了這兩個問題:
先看第一個問題,讓他收起來,這個好像不難,確實不難:
設置每次監聽值變化的時候,把 dropDownVisible 屬性設置爲 false 即可。(雖說簡單,但是這個屬性我找了半天,官網根本沒有說~~~~(>_<)~~~~ )

  watch: {
    handlerValue() {
      if (this.$refs.refHandle) {
        this.$refs.refHandle.dropDownVisible = false; //監聽值發生變化就關閉它
      }
    }
  },

在看看第二個問題,點擊label 也每次讓他選中,臥槽,無從下手,後面怎麼解決的說來話長,看實現代碼吧。

mounted() {
	//點擊文本就讓它自動點擊前面的input就可以觸發選擇。但是因組件阻止了冒泡,暫時想不到好方法來觸發。
	//這種比較耗性能,暫時想不到其他的,能實現效果了。
    setInterval(function() {
      document.querySelectorAll(".el-cascader-node__label").forEach(el => {
        el.onclick = function() {
          if (this.previousElementSibling) this.previousElementSibling.click();
        };
      });
    }, 1000);
  },
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章