element 樹形控件父子節點不相關聯(勾選父節點時,子節點不會被勾選,取消父節點時,子節點全部取消)

要實現的效果為,勾選父節點時,子節點不會被勾選,如圖:


點擊父節點.png

勾選子節點時,父節點勾選,如圖:


點擊第三級子節點時.png

取消父節點時,子節點全部取消,如圖:


第一級父節點取消勾選時.png

1、在el-tree代碼中加上父子節點不互相關聯的屬性,:check-strictly="true",然后綁定節點選中時的事件,@check-change ="checkChange"。


父子節點不互相關聯的屬性.png
節點勾選時的回調事件.png

vue代碼如下:

<el-tree
        show-checkbox
        :check-on-click-node="true"
        :data="allMenu"
        default-expand-all
        node-key="id"
        :expand-on-click-node="false"
        :props="menuProps"
        ref="menuTree"

        @check-change ="checkChange"
        :check-strictly="true">
           
</el-tree>

2、js代碼如下:

// 節點選中
    checkChange(a,b,c){  
      // 如果為取消
      if(b === false){
        //如果當前節點有子集
        if(a.children){
        //循環子集將他們的選中取消
          a.children.map(item => {
            this.$refs.menuTree.setChecked(item.id,false);
          })
        }
      }else{
        //否則(為選中狀態)
        //判斷父節點id是否為空
        if(a.pid !== 0){
        //如果不為空則將其選中
          this.$refs.menuTree.setChecked(a.pid,true);
        }
      }
    },
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容