element-tree树结构-默认选中第一个节点高亮-根据id选中节点高亮

这篇具有很好参考价值的文章主要介绍了element-tree树结构-默认选中第一个节点高亮-根据id选中节点高亮。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

  • tree树结构是在开发中经常使用的组件,比如区域树,楼层树,组织架构树,等等包含节点关系

  • 实际开发可能需要我们一进到页面选中树形结构第一个节点,并且调用数据,来达到用户体验

  • 在用户选择之后,通过本地存储的方式把楼层id存起来,刷新之后获取楼层id,调用数据

  • 或者为了用体验我们需要在选中同时高亮,在状态保持之后,把绑定楼层id节点高亮提示用户

  • 万变不离其宗,基于文档介绍和HTML结构代码。我们可以通过2种办法实现

第一种-利用默认点击选中会增加类名

  • 当我们打开浏览器检查会发现,当树节点点击之后。会在该节点添加一个类名

  • 当我们配置好树形结构唯一值,默认选中数组,ref之后我们可以通过在获取楼层数据之后赋值,再通过侦听器来侦听,当察觉默认数组复制之后,就通过document找到这个类名,点击它,就会默认选中第一个

  • 注意:使用this.$nextTick()避免出现层级问题

  • 缺点:不管传入什么值-只会选中第一个。应为是点击还会触发树结构自带的收缩

案例代码如下-可直接复制

<template>
  <div class="box">
    <!-- default-checked-key-默认勾选的节点的 key 的数组 -->
    <el-tree
      ref="myTree"
      node-key="id"
      :data="data"
      :props="defaultProps"
      :default-checked-keys="checkedkeys"
    >
    </el-tree>
  </div>
</template>
 
<script>
export default {
  data() {
    return {
      // 树形结构数据
      data: [
        {
          id: "0p150",
          name: "深圳QQQQ科技有限公司",
          children: [
            {
              id: 12070579,
              name: "一楼",
              parentId: 0,
              orderNum: null,
            },
            {
              id: 12075624,
              name: "二楼",
              parentId: 0,
              orderNum: null,
            },
          ],
        },
        {
          id: "0p151",
          name: "wertw",
          children: [],
        },
        {
          id: "0p152",
          name: "qqqqq",
          children: [
            {
              id: 120725697,
              name: "一楼",
              parentId: 0,
              orderNum: null,
            },
            {
              id: 1207236195,
              name: "二楼",
              parentId: 0,
              orderNum: null,
            },
          ],
        },
        {
          id: "0p154",
          name: "1231",
          children: [],
        },
        {
          id: "0p155",
          name: "123",
          children: [],
        },
        {
          id: "0p156",
          name: "123123",
          children: [],
        },
      ],
      // 树形结构数据配置
      defaultProps: {
        id: "id",
        label: "name",
        children: "children",
      },
      //
      checkedkeys: [],
    };
  },
  // 侦听器
  watch: {
    checkedkeys: {
      // immediate: true,
      handler: function (newVal, oldVal) {
        if (newVal) {
          this.$nextTick(() => {
            // tree树结构点击会加上下面这个类名
            // 如果默认全部展开-那就会关闭
            document.querySelector(".el-tree-node__content").click();
          });
        }
      },
    },
  },
  mounted() {
    // 使用$nextTick 等页面加载完毕之后-在选中,防止加载顺序问题
    this.$nextTick(function () {
      // 通过ref找到树节点
      // 通过树结构设置node-key
      // 结果-选中第一个
      this.checkedkeys.push(this.data[0].id);
      // 结果固定id-选中第一个
      // this.checkedkeys.push('0p150');
      // 结果-子集选中第一个
      // this.checkedkeys.push(12070579);
      // 节点key 结果选中第一个
      // this.checkedkeys.push(["0p150", 12070579]);
    });
​
    // 结论:不管传入什么,只会通过侦听器选中树结构第一个
  },
};
</script>
<style lang="scss" scoped>
// 点击选中颜色
</style>

第二种方法-通过高亮属性+tree提供api-推荐

  • 当我们配置好树结构唯一值,高亮当前节点属性,ref之后,

  • 我们在获取属性结构数据地方取第一个数据id,传入api,就可以高连当前节点

  • 注意:使用this.$nextTick()避免出现层级问题

  • 优点:只需要树形结构唯一值id传入api就可以实现选中树形结构任意节点并且高亮-符合实际开发

案例代码如下-可直接复制

<template>
  <div class="box">
    <!-- default-expand-all-展开全部 -->
    <!-- highlight-current- 是否高亮当前选中节点 -->
    <el-tree
      ref="myTree"
      node-key="id"
      :data="data"
      :props="defaultProps"
      highlight-current
      default-expand-all
    >
    </el-tree>
  </div>
</template>
 
<script>
export default {
  data() {
    return {
      // 树形结构数据
      data: [
        {
          id: "0p150",
          name: "深圳QQQQ科技有限公司",
          children: [
            {
              id: 12070579,
              name: "一楼",
              parentId: 0,
              orderNum: null,
            },
            {
              id: 12075624,
              name: "二楼",
              parentId: 0,
              orderNum: null,
            },
          ],
        },
        {
          id: "0p151",
          name: "wertw",
          children: [],
        },
        {
          id: "0p152",
          name: "qqqqq",
          children: [
            {
              id: 120725697,
              name: "一楼",
              parentId: 0,
              orderNum: null,
            },
            {
              id: 1207236195,
              name: "二楼",
              parentId: 0,
              orderNum: null,
            },
          ],
        },
        {
          id: "0p154",
          name: "1231",
          children: [],
        },
        {
          id: "0p155",
          name: "123",
          children: [],
        },
        {
          id: "0p156",
          name: "123123",
          children: [],
        },
      ],
      // 树形结构数据配置
      defaultProps: {
        id: "id",
        label: "name",
        children: "children",
      },
    };
  },
  mounted() {
    // 使用$nextTick 等页面加载完毕之后-在选中,防止加载顺序问题
    this.$nextTick(function () {
      // 通过ref找到树节点
      // 通过树结构设置node-key,通过唯一id来高亮节点
      // setCurrentKey-通过 key 设置某个节点的当前选中状态,使用此方法必须设置 node-key 属性
      // 这行不会选中
      this.$refs.myTree.setCurrentKey(this.data[0].id);
      // 这行会生效
      this.$refs.myTree.setCurrentKey(this.data[0].children[0].id);
    });
  },
};
</script>
<style lang="scss" scoped>
// 设置高亮颜色
::v-deep
  .el-tree--highlight-current
  .el-tree-node.is-current
  > .el-tree-node__content {
  background-color: #baf !important;
}
</style>

总结:

经过这一趟流程下来相信你也对 element-tree树结构-默认选中第一个节点高亮-根据id选中节点高亮 有了初步的深刻印象,但在实际开发中我 们遇到的情况肯定是不一样的,所以我们要理解它的原理,万变不离其宗。加油,打工人!

什么不足的地方请大家指出谢谢 -- 風过无痕文章来源地址https://www.toymoban.com/news/detail-708228.html

到了这里,关于element-tree树结构-默认选中第一个节点高亮-根据id选中节点高亮的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • vue3+ts实现element Plus Tree组件单选和取消单选的功能(取消已经选中的树节点),及vue3的proxy对象转换

     具体效果和代码如下: 点击了\\\"节点1\\\"并高亮显示 打印结果如下  vue3的打印对象是proxy,如需变成单纯的数组对象可以使用 JSON.parse(JSON.stringify(list))进行转换。  再次点击\\\"节点1\\\"则取消当前选中   如果对您有帮助点个赞,关注收藏一下吧 。

    2024年02月12日
    浏览(32)
  • Element Ui Tree组件实现增、删、改、查、拖拽节点 的树形结构

    介绍:首先组件 | Element官网某些功能都具备了,这里我就把这些功能结合在一起更完美的使用,其次 编辑节点 官网是没有实例,所以这里搞了一套较完整的功能,其次编辑和添加,这里直接使用了弹窗(顾及到多个参数设置),接下来效果图展示! 效果图如下: 1,其中点

    2024年02月13日
    浏览(47)
  • elementUI el-table+树形结构子节点选中后没有打勾?(element版本问题 已解决)

    1.不勾选父级CB111,直接去勾选子级(ST2001…), 子级选中后没有打勾显示 一直以为是这个树形结构和表格不兼容产生的问题,到后来看官方demo都是可以勾选的,最后排查到了版本问题, 最后尝试 给element ui升级为最新版本 “element-ui”: “ 2.15.7 ” -“element-ui”: “ 2.15.14 ”

    2024年02月07日
    浏览(31)
  • el-tree获取当前选中节点及其所有父节点的id(包含半选中父节点的id)

    如下图,我们现在全勾中的有表格管理及其下的子级,而半勾中的有工作台和任务管理及其子级 现在点击保存按钮后,需要将勾中的节点id及该节点对应的父节点,祖先节点的id(包含半选中父节点的id)也都一并传给后端,那这个例子里就应该共传入9个id,我们可以直接将

    2024年01月22日
    浏览(35)
  • Ant Design Vue Tree 选中子节点同时半选中父级节点

    需要实现的效果: 1、子菜单如果不是全部选中,一级菜单半选。 2、子菜单全选,一级菜单选中。 3、一级菜单选择,二级菜单全选。 4、没有二级菜单,则只控制一级菜单。 主要用到的属性是 checked 和 halfCheckedKeys ,通过手动控制那些菜单选中,那些半选中实现功能。 **页

    2024年04月08日
    浏览(31)
  • el-tree使用获取当前选中节点的父节点数据(开发记录)

    官网上有两种办法: 根据 data 或者 key 拿到 Tree 组件中的 node (data) 要获得 node 的 key 或者 data。 我这key设置后没有生效,采用的node获取的方法 1、html部分 2、data举例 el-tree提供的回调事件:@node-click=“handleNodeClick”。(方法名自取,这里用的原来的“handleNodeClick”) 其他:①

    2024年02月11日
    浏览(39)
  • vue:el-tree 实现动态初始默认选中和全选

    官网链接:Element - The world\\\'s most popular Vue UI framework 涉及:1. 树结构转换一维数组             2. 与全选关联            3. 父子组件间传值      大家可以参考官网文档,写的还是挺清楚的。

    2024年02月12日
    浏览(31)
  • ElementUI中el-tree获取每个节点点击的选中状态

    有时候需要获取el-tree每个节点的点击状态,可以通过以下方式,其中isCheck类型为布尔值 1.绑定@check事件,我这里是getCurrentNode,函数名自己随便写 2.绑定ref

    2024年02月11日
    浏览(36)
  • antdvue tree-select树选择组件 选中值显示label拼接父节点

    最近使用antdv的a-tree-select实现一个功能:选中子节点需要拼接父节点 如图所示 问题就是 没有直接的api可以支持 记录一下解决方法 原本的使用 修改后 总结 就是利用labelInValue 属性 处理显示的title

    2024年02月13日
    浏览(47)
  • Vue项目里设置el-tree默认选中的背景色和字体色以及鼠标悬停的背景色

    el-tree默认选中的背景色是白色,有时候我们需求是一进入到页面就要发请求,并且设置默认选中的背景色改为蓝色,字体色为白色,然后选中的项也是背景色改为蓝色,字体色为白色,那这个时候我们可以给el-tree通过添加属性 highlight-current设为高亮,然后通过以下样式改变

    2024年02月13日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包