当前位置:首页 > VUE

vue整合ztree实现树状

2026-01-22 21:26:02VUE

Vue整合ZTree实现树状结构

安装ZTree依赖

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

npm install jquery ztree

main.js中全局引入:

vue整合ztree实现树状

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:

vue整合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监听数据变化或调用方法手动更新:

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

注意事项

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

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

相关文章

vue 实现在线预览

vue 实现在线预览

Vue 实现在线预览的常见方法 使用 iframe 嵌入 通过 iframe 标签可以嵌入多种类型的文件,如 PDF、图片、网页等。需要确保文件地址可访问。 <template>…

vue实现闪烁

vue实现闪烁

Vue实现元素闪烁效果 使用CSS动画实现 通过Vue绑定class结合CSS动画实现闪烁效果,代码简洁且性能较好。 <template> <div :class="{ 'b…

vue实现逻辑

vue实现逻辑

Vue 实现逻辑的核心概念 Vue.js 是一个渐进式 JavaScript 框架,其核心逻辑围绕数据驱动和组件化开发。通过响应式系统、虚拟 DOM 和组件生命周期等机制,Vue 实现了高效的前端开发…

vue实现频道

vue实现频道

Vue实现频道功能的方法 使用Vue Router动态路由 通过Vue Router的动态路由功能可以轻松实现频道切换。在路由配置中定义动态参数,组件内通过this.$route.params获取当前…

vue 实现跳转

vue 实现跳转

Vue 实现页面跳转的方法 在 Vue 中实现页面跳转通常可以通过以下几种方式实现,具体选择取决于项目需求和技术栈(如是否使用 Vue Router)。 使用 Vue Router 进行编程式导航…

vue实现循环

vue实现循环

Vue 实现循环的方法 在 Vue 中,可以通过 v-for 指令实现循环渲染列表或对象。以下是几种常见的用法: 遍历数组 使用 v-for 遍历数组时,可以同时获取当前项和索引: <ul&…