Vue 里面对树状数组进行增删改查 的方法
[
{
"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 里面对树状数组进行增删改查 的方法的更多相关文章
- Shell数组的增删改查
Shell数组的增删改查 shell数组的定义及取值: a=(1 2 3) [root@bogon tmp]# echo ${a[*]} 1 2 3 [root@bogon tmp]# echo $ ...
- Java连接MySQL数据库增删改查通用方法
版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...
- HDU 5044 (树链剖分+树状数组+点/边改查)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5044 题目大意:修改链上点,修改链上的边.查询所有点,查询所有边. 解题思路: 2014上海网赛的变 ...
- HDU 1556 线段树/树状数组/区间更新姿势 三种方法处理
Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- js数组的增删改查
array 数组的增删改: push 从数组后面推入一个元素或多个元素 var arr = [1,2,3]; // 返回:修改后数组的长度 arr.push(4,5,6); pop 删除数组最后一 ...
- vue.js+element ui Table+spring boot增删改查
小白初学,不懂的还是太多了,找了好多资料才做出来的先记录一下 1.先用Spring boot创建一个包含了增删改查的项目 2.创建vue.js项目 3.安装Element UI (1)进入项目文件夹下 ...
- 【硬核】使用替罪羊树实现KD-Tree的增删改查
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习的第16篇文章,我们来继续上周KD-Tree的话题. 如果有没有看过上篇文章或者是最新关注的小伙伴,可以点击一下下方的传送门: ...
- thinkPHP增删改查的方法案例
thinkphp对数据库增删改查进行了封装操作,使得使用更加方便,但是不一定灵活. 可以用封装的用,需要写sql,可以执行sql. 1.原始的 $Model = new Model(); // 实例化 ...
- dbutils中实现数据的增删改查的方法,反射常用的方法,绝对路径的写法(杂记)
jsp的三个指令为:page,include,taglib... 建立一个jsp文件,建立起绝对路径,使用时,其他jsp文件导入即可 导入方法:<%@ include file="/c ...
随机推荐
- 正式学习MVC 03
1.View -> Controller的数据通信 1) 通过url查询字符串 public ActionResult Index(string user) { return Content(u ...
- 小程序自定义switch组件
如上图,小程序api中的switch组件只能自定义颜色,不能自定义宽高,所以就开始了自己写switch组件. 自定义组件样式 switch组件样式大致如图,样式思路:未选中时为一个长方形有圆角按钮,和 ...
- 数据结构-ST表
数据结构-ST表 不可修改,在线查询的 RMQ 问题. 其中 \(f[i][j]\) 表示 \(i\sim i+(1<<j)-1\) 这段的 RMQ 值. 时间复杂度 \(O(n\log ...
- PHP5.6.23+Apache2.4.20+Eclipse for PHP 4.5开发环境配置
一.Apache配置(以httpd-2.4.20-x64-vc14.zip为例)(http://www.apachelounge.com/download/) 1.安装运行库vc11和vc14 2.解 ...
- Element-UI饿了么时间组件控件按月份周日期,开始时间结束时间范围限制参数
在日常开发中,我们会遇到一些情况,在使用Element-UI 限制用户的日期时间范围的选择控制(例如:查询消息开始和结束时间,需要限制不能选择今天之后的时间). 看了网上的一些文档,零零散散.各式各样 ...
- vue中犯下的小错误(一)
在开发采筑平台SRM的移动项目中:一个页面,感觉没啥错误,但是页面报错如下: 页面中的data或者mothods都没有任何问题,但是这个报错很是让人纠结,后来发现,在使用子组件时候: 此tabShow ...
- Flutter保持页面状态AutomaticKeepAliveClientMixin
使用bottomNavigationBar切换底部tab,再切换回来就会丢失之前的状态(重新渲染列表,丢失滚动条位置). 解决方法 使用 AutomaticKeepAliveClientMixin 重 ...
- selenium 操作 获取动态页面数据
# selenium from selenium import webdriver import time driver_path = r"G:\Crawler and Data\chrom ...
- 服务发现组件之 — Eureka
前言 现在流行的微服务体系结构正在改变我们构建应用程序的方式,从单一的单体服务转变为越来越小的可单独部署的服务(称为微服务),共同构成了我们的应用程序.当进行一个业务时不可避免就会存在多个服务之间调用 ...
- 测试必知必会系列- Linux常用命令 - cd
21篇测试必备的Linux常用命令,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1672457.html 如何进 ...