vue自定义tree树组件

2023-11-12

组件内容

<template>
    <div class="tree-box">
    <div
      class="tree-box-content"
      v-for="nodeItem in data"
      :key="nodeItem.code"
    >
      <div class="notetitle">
        <span
          class="icon"
          @click="childClick(nodeItem)"
          v-if="nodeItem.children.length"
        >
            <i :class="nodeItem.open? 'el-icon-minus' : 'el-icon-plus'" />
        </span>

        <span @click="childClick(nodeItem)">
            <span class="text">{{ nodeItem[title] }}</span>
        </span>
      </div>
      <div
        v-if="
          nodeItem.children && nodeItem.children.length > 0 && nodeItem.open
        "
      >
        <myTree
          :data="nodeItem.children"
          :title="title"
          :fatherNode="nodeItem"
          :value="value"
        ></myTree>
      </div>
</template>
<script>
    export default {
        name: "myTree",
        props: {
            // 数据
            data: {
              type: Array,
            },
            // 节点展示的标签对象属性键名
            title: {
              type: String,
              default: "title",
            },
            // 树节点表示的值的键名
            value: {
              type: String,
              default: "value",
            },
            // 父级节点
            fatherNode: {
              type: Object,
            },
         },
        methods: {
             // 当前组件节点点击事件
             childClick(nodeItem) {
                  nodeItem.open= !nodeItem.open;
                  // 用于更新节点数据
                  this.$forceUpdate();
             },
        }
    }
</script>

<style lang='scss' scoped>
    .tree-box {
          width: 100%;
          height: 100%;
          overflow-y: auto;
          padding-left: 30px;
    }
    .notetitle {
        display: flex;
        align-items: center;
        font-size: 18px;
        line-height: 36px;
    }
    .text:hover {
      color: #fff;
    }
</style>

父组件使用

<template>
    <div style="width: 400px;height: 700px;">
        <myTree :data="data" />
     </div>
</template>

<script>
import myTree from "myTree/index.vue";
export default {
    components: { myTree },
    data(){
        data: [
            {
                open: false,
                title: '张三',
                code: 1,
                children: []
            }
        ],
    }
}
</script>

如果后端没给open字段,就自己添加

let a = function (arr) {
       for (let i = 0; i < arr.length; i++) {
            arr[i].open = false;
            if (arr[i].children.length > 0) {
                a(arr[i].children);
            }
        }
};
for (let i = 0; i < this.data.length; i++) {
      this.siteList[i].open = false;
      a(this.data[i].children);
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue自定义tree树组件 的相关文章

  • Vue js按钮冻结dom

    我试图在按下按钮时切换包含加载动画的跨度 直到使用 v if 函数完成 但是当我按下按钮时 DOM 冻结并且 span 元素保持不变 直到函数调用结束 如何让 DOM 不冻结并显示加载图标 非阻塞按钮按下可能是一个解决方案 HTML
  • Vue:单个网站可以使用多个 Vue 应用程序吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我有一个 Hugo 静态网站 我正在使用 Vue 使其动态化 我们正在转型 长期计划尚未确定 但在中期阶段我们正在使用 Vue 我已经在一个页面
  • 使用 Javascript 在前端创建基本 URL(开发、API 和生产)

    无论开发和部署如何 如何制作适用于 http https localhost 端口和实际域的基本 url 我想创建一个可以在所有场景或条件下工作的基本 url 无论 http https 协议 端口 本地主机和实际域如何 无论是在开发中还是
  • 在vue中提交表单。如何引用表单元素?

    我想从我的 Vue 页面通过一种方法进行经典的表单提交 我不想使用
  • 如何在Vue3中对setup的内部函数(不是返回)进行单元测试?

    我想这样测试 情况1 错误 无法监视内部属性 因为它不是函数 改为未定义 组件 vue export default setup function outer inner function inner do something for on
  • 使用 vue.js 显示 json 结果

    您好 我尝试使用 vue js 显示 json 文件结果 目标是结果将显示在值上 这是我的代码 data return fetchData function var self this self http get api casetotal
  • Web 扩展中共享 vuex 状态(死对象问题)

    我正在尝试在网络扩展中使用共享的 vue js 状态 状态存储在后台脚本的 DOM 中并呈现在弹出页面中 第一次尝试 我的第一次尝试是使用一个没有 vuex 的简单商店 背景 js var store count 0 popup js br
  • Asyncdata 与 Fetch 之间的区别

    获取数据和异步数据之间的确切区别是什么 官方文档是这么说的 异步数据 您可能想要获取数据并在服务器端呈现它 Nuxt js 添加 asyncData 方法 让您可以在之前处理异步操作 设置元件数据 异步数据每次在加载组件之前调用 仅适用于
  • Laravel Echo 不监听推送事件

    尝试使用 laravel 和 vuejs 创建一种聊天应用程序 发送消息后 我会从 laravel 触发事件 该事件会使用正确的事件类反映在推送器调试控制台上 但根本不会调用来自 vuejs 的监听回调 created window Ech
  • 如何在 vuex nuxt 中获取嵌套 getter

    i have store index js像这样 new Vuex Store modules nav namespaced true modules message namespaced true state count 0 conver
  • 未向导出的模块提供此上下文

    我对问题的提出感到不满意 受到鼓励提出改进建议 另外 请记住 由于无知 无知导致烦恼 我对问题的诊断可能有缺陷 对于那个很抱歉 In 这个答案 https stackoverflow com a 40893583 1525840建议使用th
  • Vue中有类似React.Fragment的东西吗?

    在 React 中我可以做这样的事情 parent component export default return div div 1 div div
  • 左侧导航菜单上部隐藏

    当滚动到页面最底部时 左侧导航菜单的顶部将被隐藏 The image before scrolling is shown below 滚动后的效果如下图 我不确定此问题的确切原因 因此我将不胜感激任何有关识别和解决该问题的建议或帮助 为了确
  • Laravel Vue 组件只能传递数字?

    在我的 UserMenu vue 中我写道 export default props nameVal data return 并在blade php中
  • Vuejs 2:去抖动不适用于手表选项

    当我在 VueJs 中反跳此函数时 如果我提供毫秒数作为原语 它就可以正常工作 但是 如果我将其提供为对 prop 的引用 它会忽略它 这是道具的缩写版本 props debounce type Number default 500 这是不
  • 如何在生产模式下为 Chrome 扩展启用 Vue 开发工具?

    我正在构建一个 chrome 扩展 并使用 vue cli webpack 配置 我希望能够在运行后使用 vue devtoolsnpm 运行构建命令 我尝试添加Vue config devtools true 在 main js 中 或者
  • 将 CKEditor 5 与 nuxtjs 结合使用

    我正在尝试在我的 Nuxtjs 项目中导入 CKEditor 5 的自定义版本 并且我已经尝试了所有可能的方法来正确导入它 但没有一个对我有用 这是其中之一 let ClassicEditor let CKEditor if process
  • 如何在 Vue 2 中使用 Vue 路由器

    我正在学习 Vue 并开始于网页包模板 https github com vuejs templates webpack tree master template src 我想做的第一件事是添加对 Vue Router 的支持 但我现在已经
  • Javascript:更改输入值时设置光标位置

    当您输入公式时 我试图在我的应用程序中重现类似于 Microsoft Excel Google Sheets 的用户体验 并且您可以使用不同的公式和变量来自动完成下拉菜单 为此 在验证自动完成功能后 我希望能够控制光标的位置 例如 如果我输
  • 如何将 Google Charts 与 Vue.js 库一起使用?

    我正在尝试使用 Vue js 库使用 Google Charts 制作图表 但我不知道如何添加到 div 这是我尝试做的 这是如何使用普通 javascript 添加图表 这是文档的代码示例 https developers google

随机推荐

  • control的用法及短语_out of control用法及例句

    out of control短语的意思是 失去控制 不受控制 如果Out of control 三个单词之间用横杠连接 做形容词 意思是失控的 out of control用法例句 An out of control car crashed
  • IDEA配置sonar

    idea配置sonar步骤如下 1 安装sonar插件 如果安装失败就多安装几次 博主就是安装了两次 第一次安装失败了 第二次才安装成功的 安装成功后重启idea 2 添加sonar服务器连接 3 选择连接到服务 填入名称和服务地址 4 n
  • window 设置开机自启脚本

    想在开机的时候启动某些程序 exe bat 什么的 想启动那个程序找到程序的启动目录 或者右键其快捷方式 打开文件位置找到其应用程序 如果路径为 D weixin wechat exe 则新建一个文件 文本类型就行 打开后编辑 D cd w
  • 吐血总结!50道Python面试题集锦(附答案)

    Python是目前编程领域最受欢迎的语言 在本文中 我将总结Python面试中最常见的50个问题 每道题都提供参考答案 希望能够帮助你在2023年求职面试中脱颖而出 找到一份高薪工作 这些面试题涉及Python基础知识 Python编程 数
  • 类的成员函数

    类的成员函数 1 拷贝构造函数 1 1 定义 1 2 特征 1 3 implementation 2 赋值运算符重载 2 1 定义 2 2 特征 2 3 implementation 1 拷贝构造函数 1 1 定义 构造函数 特殊的成员函数
  • 怎么在gitLab代码拉到本地

    怎么在gitLab代码拉到本地 新手从gitLab下载代码到本地 首先在本地上面创建一个空文件 然后在cmd里边输入 命令 1 cd C Users l Desktop 帝测科技 dou 创建的空文件路径 2 git clone http
  • amd 虚拟化怎么开_虚拟化技术 - CPU虚拟化

    物理机器是由CPU 内存和I O设备等一组资源构成的实体 虚拟机也一样 由虚拟CPU 虚拟内存和虚拟I O设备等组成 VMM VM Monitor 按照与传统OS并发执行用户进程的相似方式 仲裁对所有共享资源的访问 前面的文章对虚拟化技术进
  • windows下:“activate” is not a conda command

    问题描述 在windows下安装了anaconda并安装虚拟环境后 打开Anaconda Prompt窗口 执行 conda activate virtual env 时出现以下错误 CommandNotFoundError Command
  • 神州路由器DHCPv6中继服务配置

    配置如下 R1 Router gt ena Router conf R1 config ipv6 unicast routing R1 config int g0 1 R1 config g0 1 ipv6 add 2001 1 2 64
  • 在WPF中将数据从数据库导出到Excel的快速解决方案

    Spire XLS一种专业且功能强大的Excel API 使开发人员 程序员可以使用其应用程序操作Excel文件 没有Microsoft Automation Spire XLS可使编程变得更加简单 免费下载 本文将介绍一种将数据从数据库导
  • python增删改查界面_必看!!!python列表( 增 删 改 查),超详细讲解!!

    列表类型特有方法 不同的类型有自己不同的操作方法 对列表的操作有增删改查四种操作 1 增加操作 方法描述append追加 在列表的尾部加入指定的元素 extend将指定序列的元素依次追加到列表的尾部 合并 不会去重复内容 insert将指定
  • 身份证性别判断

    性别判断 param value return 1 女 2 男 public String execute String value value value trim if value length 15 if Integer parseI
  • 加速度计和陀螺仪指南

    本帖翻译自IMU 加速度计和陀螺仪设备 在嵌入式应用中使用的指南 这篇文章主要介绍加速度计和陀螺仪的数学模型和基本算法 以及如何融合这两者 侧重算法 思想的讨论 介绍 本指南旨在向兴趣者介绍惯性MEMS 微机电系统 传感器 特别是加速度计和
  • ReentrantLock详解

    一 AQS 1 AbstractQueuedSynchronizer AbstractQueuedSynchronizer简称AQS 是一个用于构建锁和相关同步器的框架 它依赖于FIFO的等待队列实现 见AbstractQueuedSync
  • FS技术总结

    技术总结 1 单机FIO测试 1 1 配置FS环境 1 2 配置 Linux NVMe over Fabrics 主机 1 3 FIO通过配置文件运行 1 4 双机 双fio测试 1 5 fio测试 2 优化代码 2 1 程序运行细节 3
  • 【JavaEE】多线程CAS中的aba问题是什么?

    博主简介 想进大厂的打工人 博主主页 xyk 所属专栏 JavaEE初阶 什么是CAS问题 CAS 全称Compare and swap 字面意思 比较并交换 CAS中的aba问题是什么 请看本文讲解 目录 文章目录 一 CAS是什么 二
  • Qt 串口调试助手16进制收发显示

    就不废话了 直接贴源码 如果你看懂我的源码的画 我认为90 的概率能解决你16进制显示问题 注意 注意 注意 qt低版本可能不提供arr hex 这个函数 源码 QString str ui gt lineEdit gt text 从QLi
  • C++函数中返回引用和返回值的区别

    一 主要讨论下面两个函数的区别 int at return m data int at return m data 上面两个函数 第一个返回值是int的引用int 第二个返回值是int 二者的区别是什么呢 我们先用一个语句 const in
  • ElasticSearch 单机、集群安装

    文章目录 ElasticSearch 基本概念 安装启动 集群配置 快速启动一个集群节点实例 集群的状态 ElasticSearch 基本概念 索引 含有相同属性的文档集合 类型 索引可以定义一个或多个类型 文档必须属于一个类型 文档 文档
  • vue自定义tree树组件

    组件内容