[
{
"id":"5e4c3b02fc984961a17607c37712eae0",
"optLock":0,
"parentId":"31372c5ce7c84eb1862c21b5af85b4d2",
"name":"1111",
"type":0,
"subCatalogues":
[
{
"id":"7bf755f26c0e499898504a34877a4fce",
"optLock":0,
"parentId":"5e4c3b02fc984961a17607c37712eae0",
"name":"3333",
"type":0,
"subCatalogues":[
{
"id":"2b08b56ab72641ffa1373813082e95c5",
"optLock":0,"
parentId":"7bf755f26c0e499898504a34877a4fce",
"name":"4444",
"type":1,"
subCatalogues":null
      }
    ]
  }
 ]
},
{
"id":"dcf5854558ae47e7b52918c4af861385",
"optLock":0,
"parentId":"31372c5ce7c84eb1862c21b5af85b4d2",
"name":"2222",
"type":0,
"subCatalogues":[
{
"id":"7acad754831b4b81b87bff33d6090166",
"optLock":0,
"parentId":"dcf5854558ae47e7b52918c4af861385",
"name":"5555",
"type":0,
"subCatalogues":[
{
"id":"4eb8db6f27f644b28a8c791208f55946",
"optLock":0,
"parentId":"7acad754831b4b81b87bff33d6090166",
"name":"6666",
"type":1,
"subCatalogues":null
  }
]

  上面是数据结构, 方法实现的目的,通过传入的 parentId 找到父级,向父级的subCatalogues添加 一个对象

   handleLocalData(pId) {
return findPidNode(this.data) //这里的data 数据就是 上面的数组
function findPidNode(data) {
data = data ? data : []
for (let i = 0, n = data.length; i < n; i++) {
let node = findInTree(data[i])
if (node) {
return node //这里得到的就是 parentId 得到的父级对象
}
}
}
function findInTree(tree) {
if (tree.id == pId) {
return tree
} else {
return findPidNode(tree.subCatalogues)
}
}
}

  通过数组是引用数据类型特征,改变数据结构就能引起 this.data 里面数据的变化,从而引起ui 图的跟新

  如何使用 handleLocalData() 方法(这里删除来说):

            let node = this.handleLocalData(this.parentId) //这里得到的this.parentId就是上面数据结构里面的 parentId,因为我通过ui 组件单独他它给列出来啦
if (node) { //这里判断是因为 在顶级的数组是没有parentId 的 ,如果没有父级 就需要想同级添加了,而不是添加到 subCatalogues 里面
let index = node.subCatalogues.findIndex(
e => e.id == this.parentId
)
node.subCatalogues.splice(index, 1)
} else {
let index2 = 0
this.data.forEach((item, index) => {
if (item.id == this.parentId) {
index2 = index
}
})
this.data.splice(index2, 1)
}

  

Vue 里面对树状数组进行增删改查 的方法的更多相关文章

  1. Shell数组的增删改查

    Shell数组的增删改查 shell数组的定义及取值: a=(1 2 3) [root@bogon tmp]# echo ${a[*]}  1 2 3 [root@bogon tmp]# echo $ ...

  2. Java连接MySQL数据库增删改查通用方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...

  3. HDU 5044 (树链剖分+树状数组+点/边改查)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5044 题目大意:修改链上点,修改链上的边.查询所有点,查询所有边. 解题思路: 2014上海网赛的变 ...

  4. HDU 1556 线段树/树状数组/区间更新姿势 三种方法处理

    Color the ball Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  5. js数组的增删改查

    array 数组的增删改: push 从数组后面推入一个元素或多个元素 var arr = [1,2,3]; ​ // 返回:修改后数组的长度 arr.push(4,5,6); pop 删除数组最后一 ...

  6. vue.js+element ui Table+spring boot增删改查

    小白初学,不懂的还是太多了,找了好多资料才做出来的先记录一下 1.先用Spring boot创建一个包含了增删改查的项目 2.创建vue.js项目 3.安装Element UI (1)进入项目文件夹下 ...

  7. 【硬核】使用替罪羊树实现KD-Tree的增删改查

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习的第16篇文章,我们来继续上周KD-Tree的话题. 如果有没有看过上篇文章或者是最新关注的小伙伴,可以点击一下下方的传送门: ...

  8. thinkPHP增删改查的方法案例

    thinkphp对数据库增删改查进行了封装操作,使得使用更加方便,但是不一定灵活. 可以用封装的用,需要写sql,可以执行sql. 1.原始的 $Model = new Model(); // 实例化 ...

  9. dbutils中实现数据的增删改查的方法,反射常用的方法,绝对路径的写法(杂记)

    jsp的三个指令为:page,include,taglib... 建立一个jsp文件,建立起绝对路径,使用时,其他jsp文件导入即可 导入方法:<%@ include file="/c ...

随机推荐

  1. ABP开发框架前后端开发系列---(16)ABP框架升级最新版本的经验总结

    有一小段时间没有持续升级ABP框架了,最近就因应客户的需要,把ABP框架进行全面的更新,由于我们应用的ABP框架,基础部分还是会使用官方的内容,因此升级的时候需要把官方基础ABP的DLL进行全面的更新 ...

  2. jsp内置对象(三)-----response对象

    response对象  response对象包含了响应客户端请求的有关信息,但在JSP中很少直接用到它.他是HttpServletResponse类的实例,response对象具有页面作用域,即访问一 ...

  3. 机器学习 - LSTM应用之sequence generation

    概述 LSTM在机器学习上面的应用是非常广泛的,从股票分析,机器翻译 到 语义分析等等各个方面都有它的用武之地,经过前面的对于LSTM结构的分析,这一节主要介绍一些LSTM的一个小应用,那就是sequ ...

  4. ASP.NET Core 快速入门(Razor Pages + Entity Framework Core)

    引子 自从 2009 年开始在博客园写文章,这是目前我写的最长的一篇文章了. 前前后后,我总共花了 5 天的时间,每天超过 3 小时不间断写作和代码调试.总共有 8 篇文章,每篇 5~6 个小结,总截 ...

  5. 使用 ALSAlib 播放 wav

    在 ARM 2440 开发板上正常播放 16bit  44100 采样率的wav , 为了程序简单,没有判断返回值. 补充,在 ubunto 上也能正常播放. 编译方法: arm-linux-gcc ...

  6. NoVNC API 文档翻译

    原文地址:https://github.com/novnc/noVNC/blob/master/docs/API.md 时间:2019-05-21     noVNC API The interfac ...

  7. Ansible-1 基本认识及清单与模块

    ansible 一.常用的自动化运维工具 1.puppet 基于ruby开发,采用c/s架构,扩展性强,基于ssl,远程命令执行相对较弱, 2.saltstack 基于python开发,采用C/S架构 ...

  8. php制作缩略图

    PHP制作缩略图 1.制作缩略图的函数 imagecopyresampled(dest,src,dx,dy,sx,sy,dw,dh,sw,sh) 说明: dest 目标画布 src 原图(要缩略的图片 ...

  9. Spring教程检视阅读

    Spring教程检视阅读 地址 可供参考的教程 <菜鸟学 SSH> <Spring Boot 那些事> <初识 Spring Security> <Sprin ...

  10. 一个和与后台数据连接的模板get post put 以及延伸的query

    /* example: require.config({ paths: { "httpClient": "../../core/http-client" } } ...