当前位置:首页 > VUE

vue iview实现树形列表

2026-02-24 09:39:09VUE

vue iview实现树形列表的方法

在Vue项目中结合iView组件库实现树形列表,主要依赖Tree组件。以下是具体实现步骤和代码示例。

安装iView

确保项目中已安装iView库。若未安装,可通过npm或yarn添加:

npm install iview --save
# 或
yarn add iview

引入iView组件

main.js中全局引入iView及其样式:

import Vue from 'vue';
import iView from 'iview';
import 'iview/dist/styles/iview.css';

Vue.use(iView);

基础树形列表实现

在Vue组件中使用Tree组件,通过data属性传递树形数据:

<template>
  <Tree :data="treeData" @on-select-change="handleSelect"></Tree>
</template>

<script>
export default {
  data() {
    return {
      treeData: [
        {
          title: '父节点1',
          expand: true,
          children: [
            {
              title: '子节点1',
              expand: true
            },
            {
              title: '子节点2',
              expand: true
            }
          ]
        }
      ]
    };
  },
  methods: {
    handleSelect(selectedNodes) {
      console.log('选中节点:', selectedNodes);
    }
  }
};
</script>

动态加载数据

通过load-data属性实现异步加载子节点:

<template>
  <Tree :data="treeData" :load-data="loadData"></Tree>
</template>

<script>
export default {
  data() {
    return {
      treeData: [
        {
          title: '父节点',
          loading: false,
          children: []
        }
      ]
    };
  },
  methods: {
    loadData(item, callback) {
      item.loading = true;
      setTimeout(() => {
        const data = [
          { title: '子节点1' },
          { title: '子节点2' }
        ];
        item.loading = false;
        item.children = data;
        callback();
      }, 1000);
    }
  }
};
</script>

自定义节点内容

通过render函数自定义节点渲染:

<template>
  <Tree :data="treeData" :render="renderContent"></Tree>
</template>

<script>
export default {
  data() {
    return {
      treeData: [
        {
          title: '自定义节点',
          expand: true
        }
      ]
    };
  },
  methods: {
    renderContent(h, { root, node, data }) {
      return h('span', {
        style: {
          color: 'blue'
        }
      }, data.title);
    }
  }
};
</script>

复选框功能

启用show-checkbox属性实现多选:

<template>
  <Tree :data="treeData" show-checkbox @on-check-change="handleCheck"></Tree>
</template>

<script>
export default {
  data() {
    return {
      treeData: [
        {
          title: '节点1',
          expand: true,
          children: [
            { title: '子节点1' },
            { title: '子节点2' }
          ]
        }
      ]
    };
  },
  methods: {
    handleCheck(selectedNodes) {
      console.log('选中节点:', selectedNodes);
    }
  }
};
</script>

拖拽功能

通过draggable和事件实现拖拽排序:

<template>
  <Tree 
    :data="treeData" 
    draggable 
    @on-drag-start="handleDragStart"
    @on-drag-end="handleDragEnd"
  ></Tree>
</template>

<script>
export default {
  data() {
    return {
      treeData: [
        {
          title: '可拖拽节点',
          expand: true
        }
      ]
    };
  },
  methods: {
    handleDragStart() {
      console.log('拖拽开始');
    },
    handleDragEnd() {
      console.log('拖拽结束');
    }
  }
};
</script>

注意事项

  • 树形数据需符合titleexpandchildren等字段约定。
  • 动态加载数据时需手动管理loading状态。
  • 拖拽功能需浏览器支持HTML5 Drag API。

vue iview实现树形列表

标签: 列表vue
分享给朋友:

相关文章

vue实现过滤

vue实现过滤

Vue实现过滤的方法 在Vue中实现数据过滤可以通过多种方式完成,以下是几种常见的方法: 使用计算属性过滤 计算属性是Vue中处理数据过滤的理想选择,它们基于响应式依赖进行缓存,只有在相关依赖发生…

vue实现翻译

vue实现翻译

Vue 实现翻译功能的方法 使用 i18n 插件实现多语言切换 安装 vue-i18n 插件: npm install vue-i18n 创建语言资源文件(如 en.json 和 zh.json):…

vue原理实现

vue原理实现

Vue 原理实现的核心机制 Vue.js 的核心原理基于响应式系统、虚拟 DOM 和模板编译。以下是其核心实现机制的分解: 响应式系统 Vue 使用 Object.defineProperty(V…

vue实现抖动

vue实现抖动

Vue 实现抖动效果 在 Vue 中实现抖动效果可以通过 CSS 动画或 JavaScript 动画库来实现。以下是几种常见的方法: 使用 CSS 动画 通过定义 @keyframes 动画并在 V…

vue 实现遮罩

vue 实现遮罩

Vue 实现遮罩层的方法 使用固定定位和透明背景 在Vue中实现遮罩层可以通过CSS固定定位结合透明背景色完成。创建一个全屏遮罩组件,利用position: fixed覆盖整个视窗。 <te…

vue 实现报价

vue 实现报价

Vue 实现报价功能 在 Vue 中实现报价功能通常涉及前端表单交互、数据计算和与后端 API 的通信。以下是实现报价功能的几种常见方法: 表单设计与数据绑定 使用 Vue 的 v-model 指…