vue element樹形組件選中節(jié)點(diǎn)與半選中節(jié)點(diǎn)按順序放入一個(gè)數(shù)組中

寫到一個(gè)利用樹形組件分配權(quán)限的時(shí)候,傳過(guò)去的數(shù)據(jù)必須是按順序排列好的一個(gè)數(shù)組,所以就寫了一個(gè)函數(shù)實(shí)現(xiàn)這個(gè)要求~


捕獲6.JPG
<template>
  <div>
    <el-tree :data="data" show-checkbox node-key="id" :props="defaultProps" @check="treeChose"></el-tree>
  </div>
</template>
<script>
export default {
  data() {
    return {
      defaultKeys: [],
      data: [
        {
          id: 1,
          label: "一級(jí) 1",
          children: [
            {
              id: 4,
              label: "二級(jí) 1-1",
              children: [
                {
                  id: 9,
                  label: "三級(jí) 1-1-1"
                },
                {
                  id: 10,
                  label: "三級(jí) 1-1-2"
                }
              ]
            }
          ]
        },
        {
          id: 2,
          label: "一級(jí) 2",
          children: [
            {
              id: 5,
              label: "二級(jí) 2-1"
            },
            {
              id: 6,
              label: "二級(jí) 2-2"
            }
          ]
        },
        {
          id: 3,
          label: "一級(jí) 3",
          children: [
            {
              id: 7,
              label: "二級(jí) 3-1"
            },
            {
              id: 8,
              label: "二級(jí) 3-2"
            }
          ]
        }
      ],
      defaultProps: {
        children: "children",
        label: "label"
      },
      form: {
        menuIds: []
      }
    };
  },
  created() {},
  methods: {
    treeChose(data, node) {
      let _this = this;
      // console.log(data, node);
      _this.form.menuIds = [];
      // 選擇的節(jié)點(diǎn)id
      let checkNodeKeys = node.checkedKeys;
      // 半選的節(jié)點(diǎn)id
      let halfCheckNodeKeys = node.halfCheckedKeys;
      // console.log(checkNodeKeys, halfCheckNodeKeys);
      // 根據(jù)節(jié)點(diǎn) id 順序,將 menuId 按順序放入 form 的 menuIds 屬性中
      function addMenuId(val) {
        // console.log(val);
        // 如果 menuIds 中沒有 且選中節(jié)點(diǎn)或者半選節(jié)點(diǎn) id 中存在,就放進(jìn)去
        if (
          _this.form.menuIds.indexOf(val.id) == -1 &&
          (halfCheckNodeKeys.indexOf(val.id) != -1 ||
            checkNodeKeys.indexOf(val.id) != -1)
        ) {
          _this.form.menuIds.push(val.id);
          // 放過(guò)之后,循環(huán)節(jié)點(diǎn)的 children 屬性
          for (let j of val.children ? val.children : []) {
            addMenuId(j);
          }
        }
      }
      for(let i of _this.data){
        addMenuId(i);
      }
      console.log(_this.form.menuIds);
    }
  }
};
</script>
<style scoped>
</style>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,650評(píng)論 1 32
  • PHP常用函數(shù)大全 usleep() 函數(shù)延遲代碼執(zhí)行若干微秒。 unpack() 函數(shù)從二進(jìn)制字符串對(duì)數(shù)據(jù)進(jìn)行解...
    上街買菜丶迷倒老太閱讀 1,495評(píng)論 0 20
  • 總結(jié)了一些開發(fā)中常用的函數(shù): usleep() //函數(shù)延遲代碼執(zhí)行若干微秒。 unpack() //函數(shù)從二進(jìn)制...
    ADL2022閱讀 543評(píng)論 0 3
  • 自己若成功了,放屁都有道理;自己若失敗了,再有道理也是放屁……共勉 !
    王芝權(quán)閱讀 190評(píng)論 0 0

友情鏈接更多精彩內(nèi)容