当前位置:首页 > VUE

vue整合ztree实现树状

2026-02-23 12:10:51VUE

整合 Vue 与 ZTree 实现树状结构

安装依赖

确保项目中已引入 jQuery 和 ZTree 相关文件。ZTree 依赖 jQuery,需提前引入:

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/ztree@3.5.48/js/jquery.ztree.all.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ztree@3.5.48/css/zTreeStyle/zTreeStyle.css">

Vue 组件封装

创建一个 Vue 组件封装 ZTree 的逻辑,通过 ref 操作 DOM 并初始化树:

<template>
  <div>
    <ul id="treeDemo" class="ztree" ref="ztree"></ul>
  </div>
</template>

<script>
export default {
  props: {
    treeData: {
      type: Array,
      default: () => []
    },
    setting: {
      type: Object,
      default: () => ({})
    }
  },
  mounted() {
    this.initZTree();
  },
  methods: {
    initZTree() {
      $.fn.zTree.init($(this.$refs.ztree), this.setting, this.treeData);
    }
  },
  watch: {
    treeData(newVal) {
      this.initZTree();
    }
  }
};
</script>

配置与数据格式

ZTree 要求数据格式为特定结构的数组,每个节点需包含 idpIdname 等字段。示例配置:

const setting = {
  data: {
    simpleData: {
      enable: true,
      idKey: "id",
      pIdKey: "pId",
      rootPId: 0
    }
  },
  callback: {
    onClick: (event, treeId, treeNode) => {
      console.log(treeNode);
    }
  }
};

const treeData = [
  { id: 1, pId: 0, name: "父节点" },
  { id: 2, pId: 1, name: "子节点" }
];

在父组件中使用

将配置和数据通过 props 传递给封装好的 ZTree 组件:

<template>
  <ZTree :setting="setting" :treeData="treeData" />
</template>

<script>
import ZTree from "./ZTree.vue";

export default {
  components: { ZTree },
  data() {
    return {
      setting: {
        data: { simpleData: { enable: true, idKey: "id", pIdKey: "pId" } }
      },
      treeData: [
        { id: 1, pId: 0, name: "Root" },
        { id: 2, pId: 1, name: "Child" }
      ]
    };
  }
};
</script>

动态更新数据

通过 Vue 的响应式特性,修改 treeData 会自动触发 ZTree 重新渲染:

this.treeData = [...this.treeData, { id: 3, pId: 1, name: "New Node" }];

注意事项

  • jQuery 冲突:若项目中已使用其他版本的 jQuery,需检查兼容性。
  • 性能优化:大数据量时建议启用异步加载(async.enable)。
  • 样式隔离:ZTree 的 CSS 可能影响全局,建议使用 scoped 或手动覆盖样式。

通过以上步骤,可实现 Vue 与 ZTree 的无缝整合,保留 ZTree 全部功能的同时利用 Vue 的响应式管理数据。

vue整合ztree实现树状

标签: 树状vue
分享给朋友:

相关文章

vue实现网页切换

vue实现网页切换

Vue 实现网页切换的方法 在 Vue 中实现网页切换通常可以通过以下几种方式完成,具体取决于项目需求和路由管理方式。 使用 Vue Router Vue Router 是 Vue.js 官方提供…

vue实现付款

vue实现付款

Vue 实现付款功能 在 Vue 中实现付款功能通常需要集成第三方支付网关(如支付宝、微信支付、Stripe 等)。以下是常见的实现方法: 集成支付宝/微信支付 安装必要的依赖(如 axios 用于…

js实现vue

js实现vue

Vue.js 的基本实现方法 在 JavaScript 中实现 Vue.js 的功能,可以通过直接引入 Vue 库或使用现代构建工具(如 Vite 或 Webpack)。以下是几种常见的实现方式:…

vue computed实现

vue computed实现

计算属性的基本用法 在Vue中,计算属性通过computed选项定义,用于声明依赖于其他属性的动态值。计算属性基于它们的依赖进行缓存,只有依赖发生变化时才会重新计算。 new Vue({ da…

vue核心实现

vue核心实现

Vue 核心实现原理 Vue.js 的核心实现主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是关键实现原理的详细说明: 响应式系统 Vue 使用 Object.defineProper…

vue 实现图钉

vue 实现图钉

实现图钉效果的步骤 在Vue中实现图钉(固定位置)效果,可以通过CSS的position: sticky属性或监听滚动事件动态修改元素样式。以下是两种常见方法: 方法一:使用CSS的positi…