当前位置:首页 > VUE

vue整合ztree实现树状

2026-01-22 21:26:02VUE

Vue整合ZTree实现树状结构

安装ZTree依赖

在Vue项目中引入ZTree需要添加jQuery和ZTree的相关文件。通过npm或直接引入CDN链接实现:

npm install jquery ztree

main.js中全局引入:

import $ from 'jquery'
import 'ztree'
import 'ztree/css/zTreeStyle/zTreeStyle.css'
window.$ = $

创建ZTree容器组件

新建一个Vue组件(如ZTree.vue),用于渲染ZTree的DOM容器:

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

<style scoped>
.ztree-container {
  width: 100%;
  height: 400px;
  overflow: auto;
}
</style>

初始化ZTree配置

在组件的mounted生命周期中初始化ZTree:

export default {
  props: {
    treeData: Array,
    setting: Object
  },
  mounted() {
    this.initZTree()
  },
  methods: {
    initZTree() {
      const defaultSetting = {
        data: {
          simpleData: {
            enable: true,
            idKey: 'id',
            pIdKey: 'parentId',
            rootPId: 0
          }
        },
        callback: {
          onClick: this.handleNodeClick
        }
      }
      const finalSetting = Object.assign({}, defaultSetting, this.setting)
      $.fn.zTree.init($('#treeDemo'), finalSetting, this.treeData)
    },
    handleNodeClick(event, treeId, treeNode) {
      this.$emit('node-click', treeNode)
    }
  },
  watch: {
    treeData(newVal) {
      this.initZTree()
    }
  }
}

使用组件示例

在父组件中调用ZTree组件并传递数据:

<template>
  <div>
    <z-tree 
      :tree-data="treeNodes" 
      :setting="treeSettings"
      @node-click="onNodeClick"
    />
  </div>
</template>

<script>
import ZTree from './components/ZTree'
export default {
  components: { ZTree },
  data() {
    return {
      treeNodes: [
        { id: 1, parentId: 0, name: '父节点1' },
        { id: 2, parentId: 1, name: '子节点1' }
      ],
      treeSettings: {
        check: {
          enable: true
        }
      }
    }
  },
  methods: {
    onNodeClick(node) {
      console.log('选中节点:', node)
    }
  }
}
</script>

常用配置项说明

  • data.simpleData.enable: 启用简单数据模式(扁平数据结构)
  • check.enable: 显示复选框
  • view.showIcon: 显示节点图标
  • callback.onCheck: 复选框勾选回调
  • async.enable: 启用异步加载模式

动态更新数据

通过watch监听数据变化或调用方法手动更新:

vue整合ztree实现树状

// 更新树数据
const zTreeObj = $.fn.zTree.getZTreeObj("treeDemo")
zTreeObj.reAsyncChildNodes(null, "refresh")

注意事项

  • 确保jQuery仅在ZTree组件范围内使用,避免与其他Vue插件冲突
  • 复杂操作建议封装成组件方法通过ref调用
  • 大数据量建议启用异步加载或虚拟滚动优化性能

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

相关文章

vue广告实现

vue广告实现

Vue 广告实现方法 在 Vue 项目中实现广告功能可以通过多种方式完成,具体取决于广告类型和需求。以下是几种常见的实现方法: 使用第三方广告平台 许多广告平台如 Google AdSense、百…

vue实现datalist

vue实现datalist

使用 Vue 实现 HTML5 的 datalist 功能 HTML5 的 <datalist> 元素提供了一种自动完成输入框的功能,允许用户在输入时从预定义的选项列表中选择。以下是几种在…

vue网页实现

vue网页实现

Vue 网页实现指南 环境准备 安装 Node.js 和 npm/yarn,确保环境配置正确。使用 Vue CLI 或 Vite 创建项目框架,快速搭建开发环境。 npm install -g @v…

vue前端实现

vue前端实现

Vue 前端实现基础步骤 安装 Vue.js 和相关依赖 通过 npm 或 yarn 安装 Vue.js,建议使用 Vue CLI 快速搭建项目。运行命令 npm install -g @vue/cl…

vue实现项目

vue实现项目

Vue 项目实现指南 环境准备 确保已安装 Node.js(建议版本 14+)和 npm/yarn。通过以下命令检查版本: node -v npm -v 创建 Vue 项目 使用 Vue CLI 快…

vue实现流程转化

vue实现流程转化

Vue 实现流程转化 在 Vue 中实现流程转化通常涉及多个步骤,包括状态管理、组件通信和动态渲染。以下是几种常见的实现方法: 使用 Vuex 进行状态管理 Vuex 是 Vue 的官方状态管理库,…