国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

關于element-tree,解決id相同如何回顯,同樣的id只能選中一個的坑!?。?!

這篇具有很好參考價值的文章主要介紹了關于element-tree,解決id相同如何回顯,同樣的id只能選中一個的坑?。。?!。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、背景

因為最近一直在跟學校合作,所以在開發(fā)的過程中,遇過了這么一個坑:【因為學校的老師可能身兼不同的職位,年級主任也可以兼任班主任,所以就會存在一個人在不同的部門,但是element-tree默認需要唯一值,也就是說,id不能一樣。所以現(xiàn)在的情況就是勾選部門A的老師A,但是部門B的狀態(tài)沒有改變,會導致被覆蓋,只能勾選中一個。包括回顯的時候只顯示某一個的老師A是勾選狀態(tài),其他部門下的老師A仍然是未被勾選的狀態(tài)】想了想,這種情況應該在多種領域都存在,所以想記錄保存一下,我會把我自己解決問題的代碼附上,僅供參考,如果大家還有其他合適的方法,也可以討論一下。(網(wǎng)上查了一下,有改源碼的,我不太建議這么做。)

二、需要解決的問題及思路

目前要解決兩個問題:

1、勾選的時候id相同的都要勾選上,反之也一樣。

2、后臺數(shù)據(jù)返回默認勾選的的id數(shù)組時,id相同的都被勾選。

思路:

因為id相同,所以element-tree沒有唯一值,我們需要將數(shù)據(jù)遍歷,給每一條數(shù)據(jù)添加一個新的字段key,形成新的list,給tree一個node-key。在選中的時候,遍歷數(shù)組,查詢id相同的節(jié)點并取出key值組成新的數(shù)組checkedList,我們運用element-tree的方法setChecked,來改變當前id相同的節(jié)點的選中狀態(tài)。

保存的時候,因為我們需要給后臺傳遞老師的id數(shù)組,但是我們?nèi)〉降氖莐ey值數(shù)組,我們需要獲取當前選中的節(jié)點,此時數(shù)組中肯定是有重復的,我們還需要去重。

三、代碼

1、首先在vue里面封裝一個方法eachTreeData,我是放在了utils文件夾下的util.js文件里,方便后期使用??杀闅vchildren形式的數(shù)據(jù),(因為后臺返回給我的數(shù)據(jù)時children形式的)

? ? /**
     * 遍歷children形式數(shù)據(jù)
     * @param data 需要遍歷的數(shù)組
     * @param callback 回調(diào)
     * @param childKey children字段名
     */
? ?     eachTreeData(data, callback, childKey) {
        if (!childKey) childKey = 'children';
        data.forEach(d => {
            if (callback(d) !== false && d[childKey]) this.eachTreeData(d[childKey], callback, childKey);
        });
    }

2、頁面代碼

<el-tree ref="teacherTree" :data="teacherList" :props="{ label: 'name' }"
                 node-key="key" show-checkbox :default-expanded-keys="teacherListNode" :default-checked-keys="checkedList" @check-change="setTeacherChecked"/>

3、js代碼(methods方法)

data(){
? ? teacherList:[],//部門教師樹
? ? teacherListNode:[0],//默認展開的節(jié)點,因為重新添加字段,所以寫死默認打開第一級
? ? checkedTeacherList:[],//后臺返回的默認選中的id數(shù)組
? ? checkedList:[],//選中的key數(shù)組
? ? params:{//提交的數(shù)據(jù)
? ? ? ? teacherIds:[]
? ? }
}
methods:{
? ? //獲取部門教師樹
? ? getTeacherList:{
? ? ? ? //假設我們已經(jīng)獲取到List,通過axios獲取
? ? ? ? this.addKeyToList(this.teacherList)//遍歷數(shù)據(jù),給節(jié)點添加key(唯一值)
? ? }
? ? //給樹的每一個節(jié)點 添加一個key(唯一值),并算出默認選中的節(jié)點key數(shù)組
? ? addKeyToList(data){
? ? ? ? let key = 0;
      ? this.$util.eachTreeData(data, (d) => {
        ? ?d.key = key++
      ? })//遍歷數(shù)據(jù)給每一個node添加一個key
      ? this.checkedList = this.contrastList(data)//對比相同id的節(jié)點并獲取key數(shù)組
? ? },
? ? //對比后臺傳回來默認選中的checkedTeacherList,返回checkedList
? ? contrastList(data){
? ? ? ? this.$util.eachTreeData(data, (d) =>{
        this.checkedTeacherList.forEach((item) => {
? ? ? ? ? //id相同就push一個key
          if(item == d.id){
            checkedList.push(d.key)
          }
        })
      })
      return checkedList
? ? },
? ? //點擊節(jié)點,判斷該節(jié)點id是否有重復的,如果有相同id執(zhí)行相同的操作(選中或取消選中)
? ? setTeacherChecked(data,isChecked){
      this.$util.eachTreeData(this.teacherList, (item) => {
        if(data.id === item.id){
          this.$refs.teacherTree.setChecked(item.key,isChecked,false)
        }
      })
    },
? ? //保存提交
? ? saveTeacher(){
? ? ? ? let  teacherIds = this.$refs.teacherTree.getCheckedNodes()//獲取選中的節(jié)點數(shù)據(jù)
? ? ? ? teacherIds.forEach((item) => {//遍歷獲取教師id
? ? ? ? ? ? this.params.teacherIds.push(item.id)
? ? ? ? })
? ? ? ? this.fileParam.teacherIds = [...new Set(this.fileParam.teacherIds)]//去重
? ? ? ? //提交!
? ? },
}

四、總結

大概就是這么個情況,主要還是為自己記錄一下,如果大家也有類似的問題,希望這篇文章能夠幫助你,代碼應該挺好理解的,有什么不懂的可以在評論區(qū)提問,看到就會回答了。謝謝~文章來源地址http://www.zghlxwxcb.cn/news/detail-491091.html

到了這里,關于關于element-tree,解決id相同如何回顯,同樣的id只能選中一個的坑?。。?!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【解決element ui 富文本回顯 p 標簽問題】

    【解決element ui 富文本回顯 p 標簽問題】

    問題描述:使用ruoyi-plus ui 的前端框架富文本控件editor進行數(shù)據(jù)提交,提交上去的內(nèi)容回顯帶有HTML 的 p 標簽,而我們想要去掉 p 標簽這時就要清空提交的HTML標簽。 我們想要去除內(nèi)容旁邊的 p 標簽這時就可以使用正則表達式來講HTML的內(nèi)容進行替換更改,在vue method中進行定義

    2024年02月13日
    瀏覽(63)
  • 關于element ui 安裝失敗的問題解決方法、查看是否安裝成功及如何引入

    關于element ui 安裝失敗的問題解決方法、查看是否安裝成功及如何引入

    執(zhí)行 npm i element-ui -S 報錯 原因:npm版本太高 報錯信息: 解決辦法: 使用命令: ?npm install --legacy-peer-deps element-ui --save 引入: 在main.js文件中引入 執(zhí)行 npm install element-plus --save 報錯 解決辦法: 使用命令: npm install element-plus --save --legacy-peer-deps ? 引入: 在main.js文件中引入

    2024年02月15日
    瀏覽(65)
  • element-ui時間日期選擇器回顯功能以及不能修改問題的解決

    element-ui時間日期選擇器回顯功能以及不能修改問題的解決

    地址:element-ui時間日期選擇器不能修改問題的解決 - 走看看 屬于是強制更改 編輯的時候,修改了時間,控制臺中能看到已修改,可是頁面上確沒修改而且也不能刪除,出現(xiàn)這樣的問題,該如何解決? 解決方案:在獲取數(shù)據(jù)回顯的時候使用$set: 剛開始是直接賦值(如果不是標

    2024年02月11日
    瀏覽(30)
  • element ui中el-table的合并相同列內(nèi)容的解決方法,簡單實用

    element ui中el-table的合并相同列內(nèi)容的解決方法,簡單實用 廢話不說,直接上代碼,vue頁面中的幾個部分如下: 注意幾點: 1、el-table中 寫上: :span-method=“objectSpanMethod” 2、兩個方法不用改動 3、想合并哪列,在data中columnArr數(shù)組里填上列名。 4、如果有bug,自己去調(diào)整吧 完事

    2024年02月11日
    瀏覽(27)
  • 關于PADS鋪銅時,相同網(wǎng)絡的GND焊盤不能和GND銅皮連接的解決方法

    關于PADS鋪銅時,相同網(wǎng)絡的GND焊盤不能和GND銅皮連接的解決方法

    如上圖所示,GND焊盤和銅箔明明是相同的網(wǎng)絡,在進行鋪銅操作后,銅箔不能覆蓋焊盤并且直接當成不同的網(wǎng)絡避開了。 實際是在設計工程中,未將該引腳的焊盤屬性設置為熱焊盤導致。 1.選擇焊盤并右鍵選擇特性 將管腳屬性的平面層熱焊盤勾選上,問題解決。 ? ?可看出

    2024年02月12日
    瀏覽(155)
  • el-select值的回顯問題:如何使element-ui的下拉框顯示label值

    el-select值的回顯問題:如何使element-ui的下拉框顯示label值

    今天寫前端又遇到個很神奇的事情,element的下拉框el-select出現(xiàn)了一點兒問題,回顯的時候顯示value的值,這個強迫癥看來就很難受 ?我寫的代碼是這樣的 查閱大量資料,突然發(fā)現(xiàn)一個簡單的方法,那就是vue的v-bind的神奇之處,v-bind的簡寫是:冒號 所以解決方法就來了(敲重

    2024年02月07日
    瀏覽(33)
  • el-tree-select樹形選擇 數(shù)據(jù)回顯

    el-tree-select樹形選擇 數(shù)據(jù)回顯

    由于用到懶加載,與一次性全部加載數(shù)據(jù)不同的是,當前只有ID,而樹結構還沒渲染,就會導致沒有l(wèi)abel回顯。所以我們要在組件剛渲染的時候,就構造我們想要的樹節(jié)點。 node-key=\\\"id\\\" 和 :default-expanded-keys=\\\"[form4.positionNo]\\\" (默認展開的節(jié)點的 key 的數(shù)組) 和 :default-checked-keys=

    2024年02月14日
    瀏覽(25)
  • 【vue2+element ui】添加修改共用表單的下拉框回顯問題分析以及解決方案(附共用表單代碼)

    【vue2+element ui】添加修改共用表單的下拉框回顯問題分析以及解決方案(附共用表單代碼)

    簡介 本人前端水平不佳,本文分享在編寫個人項目前端代碼的時候遇到的回顯問題的解決辦法,僅供參考。 問題復原 首先展示表單中的問題代碼,本次前端的設計是添加和修改操作共用表單,但是其中有一個下拉框展示形式,按照慣例通過:value進行雙向綁定,保證點擊修改

    2024年02月07日
    瀏覽(25)
  • 【前端】- 在使用Element UI 的el-tree組件時,從底層去研究如何去實現(xiàn)一鍵展開/關閉【tree節(jié)點】的功能

    【前端】- 在使用Element UI 的el-tree組件時,從底層去研究如何去實現(xiàn)一鍵展開/關閉【tree節(jié)點】的功能

    點擊前效果: 點擊后效果: 頁面部分:這里是簡單的數(shù)結構渲染,不多講,$refs.Reftree獲取的是el-tree的實例,具體作用請看下面的方法。 方法部分:該方法傳入el-tree實例,直接點擊按鈕即可實現(xiàn)展開或者關閉,這里簡單講解一下 1、ref.store.root.childNodes 通過實例來調(diào)用tree組

    2024年04月16日
    瀏覽(84)
  • Element中的el-table中如何獲取每一行的id

    只需要用 template slot-scope=\\\"scope\\\"/template 標簽包裹起來即可 使用 scope.row.列名, 的方式獲取當前行對應列的值 ?可以通過使用 作用域插槽 的方式獲取每一行的id。以下是一個示例代碼: 以下是一個示例代碼:?

    2024年01月23日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包