// 目标:将后台返回的扁平数据,根据parentId转为下拉tree

<el-form-item label='下拉选择数据'>

  <tree-select

     v-model='treeVlue'

     :options='myTreeList'

     :props="{ label:'treedataname'  value:'treedataid'  children:'childList'}"

  />

</el-form-item>

//

export default{

data(){

  myTreeList:[],

  treeValue:'',

  initData:[

    {treedataid: 503,treedataname: "心脏内科",lngparentid: 0};

    {treedataid: 504,treedataname: "心脏内科一科",lngparentid: 503};

    {treedataid: 506,treedataname: "胸痛门诊",lngparentid: 504};

    {treedataid: 507,treedataname: "神经内科",lngparentid: 0};

    {treedataid: 508,treedataname: "神经内科一病区",lngparentid: 507};

  ]  //假设initData为待处理的扁平化数据,数据结构如上,其中lngparentid为0表示第一级,为其他数表示子级。应用中也可以是后台返回的数据

},

methods:{

  getTreeData(){

       //深度拷贝数据,防止影响原数据

      this.myTreeList=JSON.parse(JSON.stringfy(this.initData))

      //两层过滤

      this.myTreeList.filter(father => {

        const branchArr=this.myTreeList.filter(child => father.treedataid===child.lngparentid)  //返回每一项的子级数组

        branchArr.length>0?father.childList=branchArr:father.childList=[]

        return father.lngparentid===0   //返回第一层

      })

      //将lngparentid不是0的删掉

      this.myTreeList=this.myTreeList.filter(e=>{

        return e.lngparentid === 0

      })

    }

  }

}

以vue+TreeSelect为例,如何将扁平数据转为tree形数据的更多相关文章

  1. Vue 爬坑之路(二)—— 组件之间的数据传递

    Vue 的组件作用域都是孤立的,不允许在子组件的模板内直接引用父组件的数据.必须使用特定的方法才能实现组件之间的数据传递. 首先用 vue-cli 创建一个项目,其中 App.vue 是父组件,com ...

  2. Vue之单文件组件的数据传递,axios请求数据及路由router

    1.传递数据 例如,我们希望把父组件的数据传递给子组件. 可以通过props属性来进行传递. 传递数据三个步骤: 步骤1:在父组件中,调用子组件的组名处,使用属性值的方式往下传递数据 <Menu ...

  3. (转)Vue 爬坑之路(二)—— 组件之间的数据传递

    Vue 的组件作用域都是孤立的,不允许在子组件的模板内直接引用父组件的数据.必须使用特定的方法才能实现组件之间的数据传递. 首先用 vue-cli 创建一个项目,其中 App.vue 是父组件,com ...

  4. Vue父子组件通信(父级向子级传递数据、子级向父级传递数据、Vue父子组件存储到data数据的访问)

    Vue父子组件通信(父级向子级传递数据.子级向父级传递数据.Vue父子组件存储到data数据的访问) 一.父级向子级传递数据[Prop]: ● Prop:子组件在自身标签上,使用自定义的属性来接收外界 ...

  5. 前端框架本质之探究——以Vue.js为例

    问:我们在使用Vue时,实际上干了什么?   答:实际上只干了一件事——new了一个Vue对象.后面的事,都交由这个对象自动去做.就好像按了下开关,机器跑起来了,剩下的事就不用我们再操心了.   各位 ...

  6. npm发布包以及更新包还有需要注意的几点问题(这里以发布vue插件为例)

    前言 在此之前,你需要去npm官网注册一个属于自己的账号,记住自己的账户名以及密码.邮箱,后面会用的到.第一步,安装webpack简易框架 vue init webpack-simple marque ...

  7. Element(Vue)+Express(Node)模拟服务器获取本地json数据

    网上很多教程说需要在build目录下的dev-server.js文件中配置,但目前最新的vue-cli是没有dev-server.js这个文件的,因为已经被合并到webpack.dev.conf.js ...

  8. [one day one question] Vue单页面应用如何保证F5强刷不清空数据

    问题描述: Vue单页面用按F5强刷,数据就恢复初始了,这怎么破? 解决方案: store.subscribe((mutation, state) => { sessionStorage.set ...

  9. vue中的数据监听以及数据交互

    现在我们来看一下vue中的数据监听事件$watch, js代码: new Vue({ el:"#div", data:{ arr:[,,] } }).$watch("ar ...

随机推荐

  1. PHP atanh() 函数

    实例 返回不同数的反双曲正切: <?phpecho(atanh(M_PI_4) . "<br>");echo(atanh(0.50) . "<br ...

  2. luogu P3223 [HNOI2012]排队

    LINK:排队\ 原谅我没学过组合数学 没有高中数学基础水平... 不过凭着隔板法的应用还是可以推出来的. 首先考虑女生 发现一个排列数m! 两个女生不能相邻 那么理论上来说存在无解的情况 而这道题好 ...

  3. HDFS---NameNode管理元数据及HA模式

    NameNode主要保存了下面的内容 1-维护元数据信息.Block和文件之间的关系,即某一个特定文件都有哪些Block: 2-每一个Block存储在什么位置(DataNode上面): 3-维护HDF ...

  4. 执行HiveSQL出现的问题

    -- ::, INFO [main] org.apache.hadoop.hive.ql.exec.ReduceSinkOperator: RECORDS_OUT_INTERMEDIATE:, -- ...

  5. 简直骚操作,ThreadLocal还能当缓存用

    背景说明 有朋友问我一个关于接口优化的问题,他的优化点很清晰,由于接口中调用了内部很多的 service 去组成了一个完成的业务功能.每个 service 中的逻辑都是独立的,这样就导致了很多查询是重 ...

  6. GitHub上最火的SpringCloud微服务商城系统项目,附全套教程

    项目介绍 mall-swarm是一套微服务商城系统,采用了 Spring Cloud Greenwich.Spring Boot 2.MyBatis.Docker.Elasticsearch等核心技术 ...

  7. C#LeetCode刷题之#682-棒球比赛(Baseball Game)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4028 访问. 你现在是棒球比赛记录员. 给定一个字符串列表,每个 ...

  8. 338. Counting Bits题目详解

    题目详情 Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate ...

  9. troubleshoot之:使用JFR解决内存泄露

    目录 简介 一个内存泄露的例子 使用JFR和JMC来分析内存泄露 OldObjectSample 总结 简介 虽然java有自动化的GC,但是还会有内存泄露的情况.当然java中的内存泄露跟C++中的 ...

  10. 离线人脸识别门禁考勤——Android设备端APK及源码免费下载

    适用场景:门禁场景的应用,适合安装在Android系统的门口机.闸机头.Pad等设备上. 主要功能:人员注册.人脸识别开门.考勤打卡.门禁权限管理.识别记录查询等. 预览效果: PC端 设备端1 设备 ...