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

element的el-tree多選樹(復選框)父子節(jié)點關聯(lián)不關聯(lián)

 更新時間:2021年05月16日 16:34:12   作者:Beam007  
最近想要實現(xiàn)多選框關聯(lián)的功能,但是卻出現(xiàn)了element的el-tree多選樹(復選框)父子節(jié)點關聯(lián)不關聯(lián)的問題,本文就來介紹一下解決方法,一起來了解一下

屬性check-strictly

官方文檔提供屬性check-strictly,在顯示復選框的情況下,是否嚴格的遵循父子不互相關聯(lián)的做法,默認為 false。
而此屬性的意思是:
默認false,父子關聯(lián)。有如下現(xiàn)象及問題:
1、當你通過函數(shù)設置勾選節(jié)點的時候,只要父節(jié)點被勾選子節(jié)點必會勾選上,即便設置勾選的list中無此子節(jié)點。
2、當你點擊勾選復選框時候,若點擊父節(jié)點,其下子節(jié)點全部統(tǒng)一跟隨父節(jié)點變化;若點擊子節(jié)點,子節(jié)點部分勾選時父節(jié)點處于半選狀態(tài),子節(jié)點全部勾選時父節(jié)點選中,子節(jié)點全部不勾選時父節(jié)點未選中。
設置true,嚴格的遵循父子不互相關聯(lián)。
1、當你通過函數(shù)設置勾選節(jié)點的時候,嚴格通過設置勾選的list中有無此節(jié)點來斷定是否勾選。
2、當你點擊勾選復選框時候,無論點擊的哪個節(jié)點只會改變當前節(jié)點的勾選狀態(tài),不存在半選狀態(tài)。

系統(tǒng)的角色菜單控制的問題

問題來了,在系統(tǒng)的角色菜單控制的時候,需要滿足以下條件:
1、當通過函數(shù)設置勾選節(jié)點的時候,需要嚴格通過設置勾選的list中有無此節(jié)點來斷定是否勾選,即勾選父節(jié)點而不一定勾選全部子節(jié)點。
2、當點擊勾選復選框時候,若點擊父節(jié)點,其下子節(jié)點全部統(tǒng)一跟隨父節(jié)點變化。
3、當點擊勾選復選框時候,若點擊子節(jié)點,子節(jié)點部分勾選時父節(jié)點處于半選狀態(tài),子節(jié)點全部勾選時父節(jié)點選中,子節(jié)點全部不勾選時父節(jié)點未選中。

需求思考:

一、check-strictly=false,行不通

按照需要滿足的條件,明顯靠近將check-strictly設置為false,于是從check-strictly=false父子互相關聯(lián)的基礎入手,需要解決的問題就是:
將尚未全部勾選的子節(jié)點對應的父節(jié)點改為半勾選狀態(tài),但是查找文檔良久無果。
只有getHalfCheckedKeys和getHalfCheckedNodes,并沒有設置成半勾選。

二、check-strictly=true,試一試

只能試一下將check-strictly設置為true,從check-strictly=true嚴格的遵循父子不互相關聯(lián)入手,需要解決的問題就是:
1、當點擊勾選復選框時候,若點擊父節(jié)點,其下子節(jié)點全部統(tǒng)一跟隨父節(jié)點變化。
2、當點擊勾選復選框時候,若點擊子節(jié)點,子節(jié)點部分勾選時父節(jié)點處于半選狀態(tài),子節(jié)點全部勾選時父節(jié)點選中,子節(jié)點全部不勾選時父節(jié)點未選中。
而在嚴格的父子不互相關聯(lián)時,點擊父子節(jié)點不會出現(xiàn)半選狀態(tài),也無法通過函數(shù)設置半選狀態(tài),無奈簡化解決問題:
1、當點擊勾選復選框時候,若狀態(tài)為 選中
1.1、其所有 父節(jié)點 (父節(jié)點、父節(jié)點的父節(jié)點以此類推)全部統(tǒng)一跟隨當前節(jié)點變化為 選中
1.2、其下 子節(jié)點 全部統(tǒng)一跟隨父節(jié)點變化為 選中 。
2、當點擊勾選復選框時候,若狀態(tài)為 未選中 ,其下 子節(jié)點 全部統(tǒng)一跟隨父節(jié)點變化為 未選中 。

解決代碼:

1、el-tree標簽屬性

<el-tree ref="tree" :data="treeMenus" :props="multiProps" :show-checkbox="true"
 node-key="menuId" highlight-current :expand-on-click-node="false" 
 :default-checked-keys="checkedId" :check-strictly="true" @check="clickDeal">

node-key:每個樹節(jié)點用來作為唯一標識的屬性,整棵樹應該是唯一的。標識節(jié)點唯一的鍵值名稱。
default-checked-keys = checkedId:對應el-tree多選樹組件初始化時默認選中ID
check-strictly = true:是否嚴格的遵循父子不互相關聯(lián)的做法
check:當復選框被點擊的時候觸發(fā)的方法
props:配置選項,具體看下圖。

在這里插入圖片描述

而根據(jù)后臺的返回,針對:props=“multiProps”,我的配置為:

multiProps: {
  children: 'childs',
  label: 'name',
  disabled: this.isDisabled
}

識別childs字段為子節(jié)點name為節(jié)點名稱,而默認是識別children為子節(jié)點label為節(jié)點名稱。

2、el-tree組件有變化時給多選樹重新賦值

updated () {
 // 給多選樹設置默認值
  this.$refs.tree.setCheckedKeys(this.checkedId)
},

checkedId為勾選節(jié)點的數(shù)組,不區(qū)分父子節(jié)點。

3、復選框點擊時的特殊處理

clickDeal (currentObj, treeStatus) {
  // 用于:父子節(jié)點嚴格互不關聯(lián)時,父節(jié)點勾選變化時通知子節(jié)點同步變化,實現(xiàn)單向關聯(lián)。
  let selected = treeStatus.checkedKeys.indexOf(currentObj.menuId) // -1未選中
  // 選中
  if (selected !== -1) {
    // 子節(jié)點只要被選中父節(jié)點就被選中
    this.selectedParent(currentObj)
    // 統(tǒng)一處理子節(jié)點為相同的勾選狀態(tài)
    this.uniteChildSame(currentObj, true)
  } else {
    // 未選中 處理子節(jié)點全部未選中
    if (currentObj.childs.length !== 0) {
      this.uniteChildSame(currentObj, false)
    }
  }
},
// 統(tǒng)一處理子節(jié)點為相同的勾選狀態(tài)
uniteChildSame (treeList, isSelected) {
  this.$refs.tree.setChecked(treeList.menuId, isSelected)
  for (let i = 0; i < treeList.childs.length; i++) {
    this.uniteChildSame(treeList.childs[i], isSelected)
  }
},
// 統(tǒng)一處理父節(jié)點為選中
selectedParent (currentObj) {
  let currentNode = this.$refs.tree.getNode(currentObj)
  if (currentNode.parent.key !== undefined) {
    this.$refs.tree.setChecked(currentNode.parent, true)
    this.selectedParent(currentNode.parent)
  }
},

到此這篇關于element的el-tree多選樹(復選框)父子節(jié)點關聯(lián)不關聯(lián)的文章就介紹到這了,更多相關element el-tree多選樹不關聯(lián)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 前端文件導出設置responseType為blob時遇到的問題及解決

    前端文件導出設置responseType為blob時遇到的問題及解決

    這篇文章主要給大家介紹了關于前端文件導出設置responseType為blob時遇到的問題及解決方法,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • vue3模塊創(chuàng)建runtime-dom源碼解析

    vue3模塊創(chuàng)建runtime-dom源碼解析

    這篇文章主要為大家介紹了vue3模塊創(chuàng)建runtime-dom源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • Vue單文件組件基礎模板小結

    Vue單文件組件基礎模板小結

    本篇文章主要介紹了Vue單文件組件基礎模板小結,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Vue-Jest 自動化測試基礎配置詳解

    Vue-Jest 自動化測試基礎配置詳解

    目前開發(fā)大型應用,測試是一個非常重要的環(huán)節(jié),而在 Vue 項目中做單元測試可以用 Jest,本文主要介紹了Vue-Jest 自動化測試,感興趣的可以了解一下
    2021-07-07
  • vue-cli項目配置多環(huán)境的詳細操作過程

    vue-cli項目配置多環(huán)境的詳細操作過程

    vue-cli 默認只提供了 dev 和 prod 兩種環(huán)境。這篇文章主要介紹了vue-cli項目配置多環(huán)境的詳細操作過程,需要的朋友可以參考下
    2018-10-10
  • vue3封裝簡易的vue-echarts問題

    vue3封裝簡易的vue-echarts問題

    這篇文章主要介紹了vue3封裝簡易的vue-echarts問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • vue select組件的使用與禁用實現(xiàn)代碼

    vue select組件的使用與禁用實現(xiàn)代碼

    這篇文章主要介紹了vue--select組件的使用與禁用的實現(xiàn)代碼,非常不錯,具有參考借鑒價值 ,需要的朋友可以參考下
    2018-04-04
  • Vue源碼學習之關于對Array的數(shù)據(jù)偵聽實現(xiàn)

    Vue源碼學習之關于對Array的數(shù)據(jù)偵聽實現(xiàn)

    這篇文章主要介紹了Vue源碼學習之關于對Array的數(shù)據(jù)偵聽實現(xiàn),Vue使用了一個方式來實現(xiàn)Array類型的監(jiān)測就是攔截器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • vue中的虛擬dom知識點總結

    vue中的虛擬dom知識點總結

    這篇文章主要介紹了vue中的虛擬dom知識點總結,文章圍繞主題內(nèi)容展開詳細介紹,需要的小伙伴可以參考一下,希望對你的學習有所幫助
    2022-04-04
  • npm安裝vue@cli報錯的簡單處理方式

    npm安裝vue@cli報錯的簡單處理方式

    最近工作中遇到了報錯,現(xiàn)在將解決的辦法分享給大家,下面這篇文章主要給大家介紹了關于npm安裝vue@cli報錯的簡單處理方式,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-12-12

最新評論

华蓥市| 淄博市| 徐州市| 五家渠市| 洞口县| 永清县| 姜堰市| 广元市| 合川市| 巴塘县| 长武县| 手游| 湖南省| 莒南县| 三台县| 瑞金市| 洪雅县| 宜都市| 新郑市| 馆陶县| 崇州市| 望奎县| 同心县| 紫金县| 潜江市| 乐东| 陇川县| 颍上县| 嵩明县| 泗水县| 红桥区| 资兴市| 寿阳县| 秭归县| 广安市| 博湖县| 嵊州市| 镇平县| 三台县| 安多县| 阿鲁科尔沁旗|