iview tree 獲取選中子節點的整條數據鏈

 

這樣子獲取到數據是,checked等於true的,獲取不到他的父級,父級的父級es6

解決辦法代碼以下:json

 //須要有一個惟一ID數組

        //======================================
        //擴展remove方法
        Array.prototype.remove = function (val) {
          let index = this.indexOf(val);
          if (index > -1) {
            this.splice(index, 1);
          }
        };
        //======================================
        //獲取整條數據鏈
        function getParent(array, childs, ids) {
          for (let i = 0; i < array.length; i++) {
            let item = array[i];
            if (Number(item.id) === Number(ids)) {
              childs.push(item);
              return childs;
            }
            if (item.children && item.children.length > 0) {
              childs.push(item);
              let rs = getParent(item.children, childs, ids);
              if (rs) {
                return rs;
              }
              else {
                childs.remove(item);
              }
            }
          }
          return false;
        }

        //獲取全部選中節點
        let params = this.$refs.tree.getCheckedNodes();
        //全部數據
        let allData = ['全部數據'];
        //循環執行全部選中的節點鏈,放到arr1數組裏
        let arr1 = [];
        for (let i = 0; i < params.length; i++) {
          //單條數據鏈
          let aData = getParent(allData, [], params[i].id);//方法入口在這裏 for (let y = 0; y < aData.length; y++) {
            //拆分紅單個json數組放到arr1裏
            arr1.push(aData[y]);
          }
        }

        //arr1去重 es6的set方法
        function dedupe(array) {
          return Array.from(new Set(array));
        }

        arr1 = dedupe(arr1);

 

這樣就能獲取完整的整條數據鏈this

相關文章
相關標籤/搜索