欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

屬性check-strictly

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

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

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

需求思考:

一、check-strictly=false,行不通

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

二、check-strictly=true,試一試

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

解決代碼:

1、el-tree標(biāo)簽屬性

<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:每個(gè)樹節(jié)點(diǎn)用來(lái)作為唯一標(biāo)識(shí)的屬性,整棵樹應(yīng)該是唯一的。標(biāo)識(shí)節(jié)點(diǎn)唯一的鍵值名稱。
default-checked-keys = checkedId:對(duì)應(yīng)el-tree多選樹組件初始化時(shí)默認(rèn)選中ID
check-strictly = true:是否嚴(yán)格的遵循父子不互相關(guān)聯(lián)的做法
check:當(dāng)復(fù)選框被點(diǎn)擊的時(shí)候觸發(fā)的方法
props:配置選項(xiàng),具體看下圖。

在這里插入圖片描述

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

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

識(shí)別childs字段為子節(jié)點(diǎn)name為節(jié)點(diǎn)名稱,而默認(rèn)是識(shí)別children為子節(jié)點(diǎn)label為節(jié)點(diǎn)名稱。

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

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

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

3、復(fù)選框點(diǎn)擊時(shí)的特殊處理

clickDeal (currentObj, treeStatus) {
  // 用于:父子節(jié)點(diǎn)嚴(yán)格互不關(guān)聯(lián)時(shí),父節(jié)點(diǎn)勾選變化時(shí)通知子節(jié)點(diǎn)同步變化,實(shí)現(xiàn)單向關(guān)聯(lián)。
  let selected = treeStatus.checkedKeys.indexOf(currentObj.menuId) // -1未選中
  // 選中
  if (selected !== -1) {
    // 子節(jié)點(diǎn)只要被選中父節(jié)點(diǎn)就被選中
    this.selectedParent(currentObj)
    // 統(tǒng)一處理子節(jié)點(diǎn)為相同的勾選狀態(tài)
    this.uniteChildSame(currentObj, true)
  } else {
    // 未選中 處理子節(jié)點(diǎn)全部未選中
    if (currentObj.childs.length !== 0) {
      this.uniteChildSame(currentObj, false)
    }
  }
},
// 統(tǒng)一處理子節(jié)點(diǎn)為相同的勾選狀態(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é)點(diǎn)為選中
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)
  }
},

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

相關(guān)文章

  • Vue.js在數(shù)組中插入重復(fù)數(shù)據(jù)的實(shí)現(xiàn)代碼

    Vue.js在數(shù)組中插入重復(fù)數(shù)據(jù)的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Vue.js在數(shù)組中插入重復(fù)數(shù)據(jù)的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2017-11-11
  • Vue.js通過(guò)組件處理Icon圖標(biāo)

    Vue.js通過(guò)組件處理Icon圖標(biāo)

    這篇文章介紹了Vue.js通過(guò)組件處理Icon圖標(biāo)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11
  • vue3中el-table實(shí)現(xiàn)多表頭并表格合并行或列代碼示例

    vue3中el-table實(shí)現(xiàn)多表頭并表格合并行或列代碼示例

    這篇文章主要給大家介紹了關(guān)于vue3中el-table實(shí)現(xiàn)多表頭并表格合并行或列的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-02-02
  • vue.js實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器功能

    vue.js實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器功能

    這篇文章主要為大家詳細(xì)介紹了vue.js實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • vue 1.0 結(jié)合animate.css定義動(dòng)畫效果

    vue 1.0 結(jié)合animate.css定義動(dòng)畫效果

    本文分步驟給大家介紹了Vue 1.0自定義動(dòng)畫效果,vue1.0代碼結(jié)合animate.css定義動(dòng)畫,頁(yè)面一定要引入animate.cdd,具體實(shí)例代碼大家參考下本文
    2018-07-07
  • Vue引入jQuery的方法和配置教程

    Vue引入jQuery的方法和配置教程

    雖然Vue.js作為一個(gè)現(xiàn)代化的前端框架,鼓勵(lì)使用其自身的響應(yīng)式機(jī)制來(lái)處理DOM操作,但在某些情況下,尤其是在需要維護(hù)舊系統(tǒng)的項(xiàng)目中,可能會(huì)遇到需要引入jQuery的情況,本文將詳細(xì)講解如何在Vue項(xiàng)目中引入jQuery,需要的朋友可以參考下
    2024-09-09
  • vue鼠標(biāo)懸停事件監(jiān)聽實(shí)現(xiàn)方法

    vue鼠標(biāo)懸停事件監(jiān)聽實(shí)現(xiàn)方法

    頁(yè)面在鼠標(biāo)懸停(不動(dòng))n秒之后,頁(yè)面進(jìn)行相應(yīng)的事件,下面這篇文章主要給大家介紹了關(guān)于vue鼠標(biāo)懸停事件監(jiān)聽的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • Vue-router跳轉(zhuǎn)和location.href的區(qū)別及說(shuō)明

    Vue-router跳轉(zhuǎn)和location.href的區(qū)別及說(shuō)明

    Vue?Router是Vue.js官方的路由管理器,它允許我們通過(guò)定義路由來(lái)管理應(yīng)用程序的不同視圖和狀態(tài),Vue路由跳轉(zhuǎn)主要有以下幾種方式:<router-link>標(biāo)簽、this.$router.push方法、this.$router.replace方法和this.$router.go方法
    2025-01-01
  • Vue?使用?setup?語(yǔ)法糖的示例詳解

    Vue?使用?setup?語(yǔ)法糖的示例詳解

    在 setup 語(yǔ)法糖中通過(guò) import 引入的內(nèi)容,也可以直接在 template 標(biāo)簽中使用,這篇文章主要介紹了Vue?使用?setup?語(yǔ)法糖,需要的朋友可以參考下
    2023-10-10
  • vue實(shí)現(xiàn)可改變購(gòu)物數(shù)量的購(gòu)物車

    vue實(shí)現(xiàn)可改變購(gòu)物數(shù)量的購(gòu)物車

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)可改變購(gòu)物數(shù)量的購(gòu)物車,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07

最新評(píng)論