IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> el-tree自定义节点内容并设置选中节点的样式 -> 正文阅读

[JavaScript知识库]el-tree自定义节点内容并设置选中节点的样式

在element-ui中el-tree算是稍微复杂点儿的了,这里简单记录一些

闲话不说了,直接附上代码?

template相关:?

<el-tree
  ref="myTree"
  v-loading="loading"
  :data="treeData"
  :props="{
    children: 'children',
    label: 'regionName',
  }"
  node-key="id"
  highlight-current
  default-expand-all
  :expand-on-click-node="false"
  @node-click="nodeClick"
>
  <span class="custom-tree-node" slot-scope="{ node, data }">
    <span>{{ node.label }}</span>
    <span>
      <el-button
        type="text"
        class="tree-item-button"
        icon="el-icon-plus"
        @click.stop="() => addChindTreeNode(data)"
      ></el-button>
      <el-button
        type="text"
        class="tree-item-button"
        icon="el-icon-edit-outline"
        @click.stop="() => editTreeNode(data)"
      ></el-button>
      <el-button
        type="text"
        class="tree-item-button"
        icon="el-icon-view"
        @click.stop="() => viewTreeNode(data)"
      ></el-button>
      <el-button
        v-if="data.level != 0"
        type="text"
        class="tree-item-button"
        icon="el-icon-delete"
        @click.stop="() => delTreeNode(data)"
      ></el-button>
    </span>
  </span>
</el-tree>

script相关 :

//  区域树状结构
getRegionTree() {
  this.loading = true;
  regionTree().then(({ data }) => {
    if (data && data.data.length) {
      this.treeData = data.data;
      // 默认选中第一条的最里层的
      const o = this.getDefaultObj(this.treeData);
      this.currRegionLevel = o.level;
      this.currRegionParentCode = o.parentCode;
      this.currRegionId = o.id;
      this.$nextTick(() => {
        this.$refs.myTree.setCurrentKey(o.id);
      });
    }
    this.loading = false;
  });
},
// 递归获取第一条中最里层的
getDefaultObj(tree) {
  let o;
  let firstObj = tree[0] || {};
  if (firstObj.children && firstObj.children.length) {
    o = this.getDefaultObj(firstObj.children);
  } else {
    o = firstObj;
  }
  return o;
},
// 新增下级树节点
addChindTreeNode(data) {
  //console.log(data, 'data---->>>')
  this.$refs.TreeForm.init("addChild", "", data);
},
// 修改树节点
editTreeNode(data) {
  //console.log(data, 'data---->>>')
  this.$refs.TreeForm.init("edit", data.id, data);
},
// 查看树节点
viewTreeNode(data) {
  //console.log(data, 'data---->>>')
  this.$refs.TreeForm.init("view", data.id, data);
},
// 删除数据节点
delTreeNode(data) {
  this.$confirm(`确定删除所选项吗?`, "提示", {
    confirmButtonText: "确定",
    cancelButtonText: "取消",
    type: "warning",
  }).then(() => {
    this.loading = true;
    delReionInfo(data.id).then(({ data }) => {
      if (data && data.data) {
        this.$message.success("操作成功");
        this.getRegionTree();
      }
      this.loading = false;
    });
  });
},
// 树形节点被点击时的回调
nodeClick(data) {
  this.currRegionLevel = data.level; //当前选中的区域等级
  this.currRegionId = data.id; // 当前选中的区域ID
  this.currRegionParentCode = data.parentCode; // 当前选中的
  // 接下来就是点击之后要做些什么事儿
},

css设置选中的节点的样式

我这个是写在全局的样式,如果是在组件里面,前面要加上 /deep/ 或者 ::v-deep做个样式穿透才行?

//  移入树形
.el-tree-node__content:hover {
  background: rgba(0, 229, 255, 0.3) !important;
}
// 选中当前node的样式
.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
  background: rgba(0, 229, 255, 0.5)!important;
  color: red!important;
}

效果?

注意:?

?el-tree官网还有个current-node-key这个属性,这个只能在最初的时候(也就是写死的默认值)才可以设置上,但实际项目中会从后台拿到数据之后再去设置,这时候我们会this.currNodeKey = data.xxx;这样你会发现设置不上,也算是一个坑吧

所以我们要采用上面的方式:

①?highlight-current(属性)

②?setCurrentKey(方法)

这两个才是关键代码

还有我上次也写了一篇关于el-tree的,可以勾选的相关?,也罢链接附上吧

el-tree实现只显示某一级复选框且单选?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:13:50  更:2022-07-17 16:17:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:26:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码