Element的el-tree控件后台数据结构的生成以及方法的抽取

生成后台数据结构:

  1. 首先,我们需要明确el-tree控件所需要的数据格式,它要求数据使用树形结构进行展示,每一项数据包含以下属性:

  2. label:节点描述

  3. children:子节点数据,是一个数组,也可以为空

  4. 接着,我们需要对后台的原始数据进行格式化处理,使其可以被el-tree控件所展示。常见的处理方式是使用递归的方式将原始数据转换为树形结构,具体过程如下:

  5. 初始化一个空数组treeList

  6. 遍历原始数据源,每个节点都需要经过以下处理:

  7. 将原始数据源中的每一项都转化为一个对象,包含 label 和 children 两个属性

  8. 如果该节点有子节点,则递归处理子节点

  9. 将生成的treeList数组返回,可传入el-tree作为树形结构数据源

方法的抽取:

  1. 可将递归处理树形结构的函数进行封装,作为el-tree控件数据转换的工具方法,方便后续操作。

示例1: 以Vue为例,middlewares为原始数据的结构,生成符合el-tree控件需要的树形结构,并通过template进行展示。

<template>
  <div>
    <el-tree :data="treeData" :props="defaultProps"></el-tree>
  </div>
</template>

<script>
export default {
  data () {
    return {
      middlewares: [
        {
          id: '0',
          name: 'middleware 1',
          children: [
            {
              id: '1',
              name: 'middleware 1-1'
            },
            {
              id: '2',
              name: 'middleware 1-2'
            }
          ]
        },
        {
          id: '3',
          name: 'middleware 2'
        }
      ],
      defaultProps: {
        children: 'children',
        label: 'name'
      }
    }
  },
  computed: {
    treeData() {
      return this.transformData(this.middlewares);
    }
  },
  methods: {
    transformData(rawData) {
      let treeList = [];
      rawData.forEach(item => {
        let node = {
          label: item.name
        };

        if (item.children && item.children.length > 0) {
          node.children = this.transformData(item.children);
        }

        treeList.push(node);
      });

      return treeList;
    }
  }
}
</script>

示例2:以React为例,items为原始数据的结构,生成符合el-tree控件需要的树形结构,并通过jsx进行展示。

import React,{ Component } from 'react';
import { Tree } from 'element-react';
import 'element-theme-default';

class Main extends Component {
  constructor(props) {
    super(props);

    this.state = {
      items: [
        {
          id: '0',
          name: 'middleware 1',
          children: [
            {
              id: '1',
              name: 'middleware 1-1'
            },
            {
              id: '2',
              name: 'middleware 1-2'
            }
          ]
        },
        {
          id: '3',
          name: 'middleware 2'
        }
      ]
    };
  }

  render() {
    return (
      <div>
        <Tree
          data={this.transformData(this.state.items)}
          props={{children: 'children', label: 'name'}}
        />
      </div>
    );
  }

  transformData(rawData) {
    let treeList = [];
    rawData.forEach(item => {
      let node = {
        label: item.name
      };

      if (item.children && item.children.length > 0) {
        node.children = this.transformData(item.children);
      }

      treeList.push(node);
    });

    return treeList;
  }
}

export default Main;

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Element的el-tree控件后台数据结构的生成以及方法的抽取 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JS Object构造函数之Object.freeze

    Object.freeze()是JavaScript中的一个内置方法,它会冻结一个对象,使对象成为不可修改的。一旦一个对象被冻结,任何的属性、值、方法等都将不能被修改、添加、删除或重新赋值。 使用Object.freeze()方法能有效地保护Javascript对象的数据,避免意外修改,从而提高代码的可维护性和安全性。 Object.freeze()方法的用…

    JavaScript 2023年5月28日
    00
  • JavaScript面试开发常用的知识点总结

    JavaScript面试开发常用的知识点总结 为了帮助准备 JavaScript 面试的同学们更好地备战,我总结了 JavaScript 面试开发常用的知识点,并列出了一些常见的面试题目和解答。以下是具体内容: JavaScript基础知识点 变量与类型 JavaScript 变量的声明可以使用 var,let 和 const。其中,var 是 ES5 中声…

    JavaScript 2023年5月18日
    00
  • javascript 操作符(~、&、|、^、<<、>>)使用案例

    JavaScript 操作符使用攻略 JavaScript 中提供了丰富的操作符,包括算术、比较、逻辑、位移、位运算等等,其中比较少用到的是位运算。本文将详细讲解与位运算相关的操作符 ~、&、|、^、<<、>>,并且提供两个常见的使用案例。 理解位运算 位运算指的是直接对二进制数字进行运算,它常常被用在对整型数字进行一些特殊的…

    JavaScript 2023年5月18日
    00
  • 微信小程序 火车票查询实例讲解

    下面是针对微信小程序火车票查询实例讲解的详细攻略: 1. 了解API和数据格式 在开始前,我们要了解火车票查询所需要使用的API和数据格式。一般来说,我们需要使用第三方提供的API来进行火车票查询。常用的API有12306、高德等。这里以12306 API为例进行讲解。12306 API的请求地址为https://kyfw.12306.cn/otn/left…

    JavaScript 2023年6月11日
    00
  • javascript自定义日期比较函数用法示例

    一、什么是javascript自定义日期比较函数 在JavaScript中,可以通过定义自定义函数来实现日期的比较。自定义日期比较函数可以根据需求自定义比较方式,比如判断两个日期的大小、判断某个日期是否在指定的日期范围内等等。 二、javascript自定义日期比较函数实现方式 JavaScript中比较日期的方法有很多种,可以使用Date对象的方法进行比较…

    JavaScript 2023年5月28日
    00
  • 利用Three.js制作一个新闻联播开头动画

    利用Three.js制作一个新闻联播开头动画需要按照以下步骤进行: 1. 准备工作 首先,需要在前端项目中引入Three.js。可以通过CDN或者npm安装来引入Three.js。其次,需要在HTML文档中创建一个容器元素,如div,作为渲染这个场景的容器。 在JS文件中,需要定义渲染器、摄像机、场景,以及需要展示的物体。同时需要设置动画帧数,并创建相应的动…

    JavaScript 2023年6月11日
    00
  • 如何用threejs实现实时多边形折射

    下面是关于如何用threejs实现实时多边形折射的攻略: 简介 实时多边形折射可以让我们在视觉上模拟水或者其他材料的折射现象,从而能够提高场景的逼真程度。该技术通常使用片元着色程序来实现,并且需要一些复杂的计算和优化。在threejs中,可以使用ShaderMaterial来实现这个效果。下面是一个完整的攻略: 实现过程 1. 创建多边形模型 首先,我们需要…

    JavaScript 2023年6月11日
    00
  • 只出现一次的提示信息(js+cookies)

    下面是关于“只出现一次的提示信息(js+cookies)”的详细攻略: 问题描述 常见的网站应用场景是,用户在第一次访问网站时,我们需要给用户一些说明或提示信息,但是当用户再次访问网站时,我们希望这些提示信息仅在第一次访问时出现,之后访问也无需再次出现。 解决方案 我们可以使用js和cookies来解决这个问题。具体实现过程分为以下几条: 1. 判断是否是第…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部