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日
    浏览(51)
  • mysql数据库递归查询树形结构(适用场景:菜单多级分类,多级关联评论查询),用strea流把list转成树的方法详解

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

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

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

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

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

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

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

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

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

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

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

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

    数据实例: 主要代码:

    2024年02月13日
    浏览(47)
  • VUE2+Element-ui树形控件tree结构的值获取和传给后台

    最近做到了权限管理模块 其中的菜单权限需要用到tree结构进行多选功能的渲染操作 废话少说,直接上代码 将tree结构放在form中配合表单使用 并附带全选和全不选,展开和折叠功能 其中的show-checkbox作用是对tree数据的多选模式 要写在data中的数据 其中defaultProps一定不能忘记

    2024年02月05日
    浏览(59)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包