vue递归函数|树形结构或者权限使用

这篇具有很好参考价值的文章主要介绍了vue递归函数|树形结构或者权限使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

👉vue获取到树形结构后递归遍历数据,生成树形结构数据,无限级_vue遍历树形数据_常威在打来福~的博客-CSDN博客

需求是:三级联动数据,获取到的数据也是树形结构的,需要不停的往下循环,但是又不确定是几层,那么这样需要用到递归方法。

代码实现:文章来源地址https://www.toymoban.com/news/detail-455679.html

//1、三级联动,elementui官网中只能单选,多选是用不了的,所以只能用另一个插件来进行多选,先下载包
npm install ele-multi-cascader

//2、在main.js中引用和使用
import elCascaderMulti from "el-cascader-multi";
Vue.use(elCascaderMulti);

//3、vue页面template
<el-collapse accordion>
   <el-collapse-item v-for="item in usersTree" :key="item.id">
     <template slot="title">
       标题啦<i class="header-icon el-icon-info"></i>
     </template>
     <el-cascader-multi v-model="checkList" :data="item.children" filterable> 
     </el-cascader-multi>
   </el-collapse-item>
</el-collapse>


//4、vue页面的data
data () {
	return {
		usersTree: []
	}
}

//5、vue页面的methods
methods {
	organizManage () {
      //  从后台获取树形结构数据
      this.axios.get('system/organizManage/tree').then(res => {
          if (res.code === '0') {
              this.usersTree = res.data
              this.usersTree.forEach(item => {
                  if (item.children.length > 0) {
                  	  // 即:this.digui(item);在这地方添加的
                      item.children.forEach(items => {
                          // 下面的就是执行递归的方法,因为我是从第二层才开始需要往下挖的,
                          // 所以这里多了个forEach,如果从第一层起,从item就好了,
                          // 即:this.digui(item);在上面添加
                          this.digui(items); 
                          // 这里是源头,把一个对象开始递归,开始循环
                          // 如果想看完整数据,那么是在这里打印数据哦
                          console.log(items, '看我查看完整的数据哦')
                          // 因为上一步递归时,就已经把循环children的动作做完了,这里是验收递归方法的地方。
                      })
                  } else {
                      // 如果第一层没有子项做的操作。。。。。
                  }
              })
          } else {
              this.$message.error(res.message);
          }
      });
  },
  digui (item) {
  	  // 一层一层往下面执行,循环,直到不满足情况的条件下,
      // 会自动跳出这个递归方法,然后又到上面方法的源头处,开始执行下一个对象。。。
      if (item.children.length > 0) {
          item.value = item.orgCode
          item.label = item.orgName
          // 因为三级联动的数据格式是value和label,所以需要自己手动添加,没有的忽略。
          item.children.forEach(ff => {
          	  // 这里就是判断他的children下面还有没有值,有的话我就要往下挖,就又开始自己调用自己了
              this.digui(ff)
          })
      }  else {
      	   // 这里就是判断,如果我这一层的children下面没有东西的时候该做什么操作 
          item.value = item.orgCode
          item.label = item.orgName 
          // 要添加value和label,否则会看不到标签名字和值
          // --------------------------分割线---------------------------------
          // 下面部分是我的需求,如果他的chilren下面没有值,
          // 那么发送请求获取本层数据下有没有值,没有children就是空,有的话,就把值push进他的children。这里看自己需求
          let form = {
              orgCode: item.orgCode,
              orgName: item.orgName,
              pageNum: 1,
              pageSize: 100000,
              companyId: item.companyId
          }
          this.store.dispatch('system/usersManage/list', form).then(res => {
              if (res.code === '0') {
                  if (res.data.list.length > 0) {
                      for (var i = 0; i < res.data.list.length; i++) {
                          res.data.list[i].value = res.data.list[i].userId
                          res.data.list[i].label = res.data.list[i].userName
                          item.children.push(res.data.list[i])
                      }
                  }
              }
          });
      }
      // 到这里为止,不能在这里打印数据,不然数据就是个断层的,
      // 因为在这里打印的数据是当前循环的这一层的数据,如果想看完整数据效果,
      // 那么就需要在递归方法第一次调用的地方打印需要递归的值,即上一个方法中。
  },
}

到了这里,关于vue递归函数|树形结构或者权限使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • js递归遍历树形结构数据,获取所有数组id集合

    实现思路 可以使用递归遍历整个树形数组,将每个节点的id加入到一个数组中,最后返回这个数组即可。 数据准备 代码实现 方式一 获取结果 方式二 获取结果 方式三 获取结果 方法总结 这里的tree是树形数组,result是用来保存所有id的数组。 首先遍历当前层级的每个节点,

    2024年02月11日
    浏览(38)
  • mysql数据库递归查询树形结构(适用场景:菜单多级分类,多级关联评论查询),用strea流把list转成树的方法详解

    层次关系: 现在的需求是把这个层级关系,在前端显示出来,后端的处理方法有两种: 1.直接把全部的数据从数据库中拿到,然后在java代码里面使用树形结构来进行解析,但是这种做法只能在数据量比较小的时候使用,然后数据量一大会造成内存溢出 2.在mysql中创建一个函数

    2024年02月05日
    浏览(28)
  • 18.5:给定一个栈,请逆序这个栈,不能申请额外的数据结构,只能使用递归函数

    假设我们有一个f方法:可以拿到栈底元素,并保证其他元素栈中顺序不变。 上来就调用f方法,拿到栈底元素 lowValue 。此时stack中栈底元素被拿走了。 这个递归不断的调用f方法,直到栈为空。即:在递的过程中,将栈底元素都收集好了,并且顺序由前往后正好是倒序。 然后

    2024年02月11日
    浏览(31)
  • vue实现elementUI table表格树形结构-使用懒加载时-解决子节点增删改后,不刷新子节点数据问题

    在使用element-ui的table组件时,使用树形结构,并使用了懒加载,可出现了一个问题,在对当前节点添加一个子节点数据,或删除一个子节点数据时,当前节点的子节点数据并不自动刷新出来。element-ui官方没有提供实时刷新子节点数据的方法。 可以使用window.location.reload();但每

    2024年02月09日
    浏览(39)
  • vue element-table(树形结构),实现同级拖动排序

    ####需求:树形结构的table需要实现同级拖拽排序 1.vue引用sortablejs 参考相关配置http://www.sortablejs.com/options.html 2.定义变量 3.初始化created中调用方法,方法如下 4.扁平化数据方法 5.犹豫这个过程中需要子级存在父级的parentId,自己把扁平化的方法改造了一下,在查询完列表数据时

    2024年02月14日
    浏览(31)
  • React18-树形菜单-递归

    https://github.com/dL-hx/manager-fe/commit/85faf3b1ae9a925513583feb02b9a1c87fb462f7 从接口获取城市数据,渲染出一个树形菜单 要求: 可以展开和收起 学会递归渲染出一个树形菜单, 并点击后可以展开和收起 通过对数据上添加控制字段(show)避免在子组件添加各种同步的useState,等字段.保证单向数据

    2024年01月22日
    浏览(63)
  • 使用hutool工具生成树形结构

    假设要构建一个菜单,可以实现智慧库房,菜单的样子如下: 那这种结构如何保存在数据库中呢?一般是这样的: ​ 每条数据根据 parentId 相互关联并表示层级关系, parentId 在这里也叫外键 id parentId name 1 0 智慧库房 2 1 RFID 3 1 智慧大屏 4 1 智能密集架 5 1 环境管控 使用步骤:

    2024年02月14日
    浏览(36)
  • 递归遍历树结构数据(js,vue)

    数据实例: 主要代码:

    2024年02月13日
    浏览(38)
  • 前端Vue uni-app App/小程序/H5 通用tree树形结构图

    随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。 通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随

    2024年02月16日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包