当前位置:首页 > 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及其样式:

vue 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属性实现异步加载子节点:

vue iview实现树形列表

<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
分享给朋友:

相关文章

vue slot实现

vue slot实现

vue slot 的实现方法 在 Vue 中,slot 是一种内容分发机制,允许父组件向子组件传递模板内容。以下是几种常见的 slot 实现方式: 默认 slot 默认 slot 是最基础的 slo…

vue router 实现

vue router 实现

Vue Router 的实现 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是 Vue Router 的核心实现方式。 安装 Vue Router 通过…

vue实现公告

vue实现公告

Vue 实现公告功能的方法 公告功能通常需要实现滚动展示、自动切换或固定显示的效果。以下是几种常见的实现方式: 使用 marquee 标签实现滚动公告 <template> <…

vue实现看板

vue实现看板

Vue 实现看板功能 使用 Vue 实现看板功能可以通过组件化开发、状态管理和拖拽库结合完成。以下是一个完整的实现方案: 基础项目结构 src/ ├── components/ │ ├── Ka…

vue 实现拖拉

vue 实现拖拉

Vue 实现拖拽功能的方法 使用 HTML5 原生拖放 API HTML5 提供了原生的拖放 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 dr…

vue实现白板

vue实现白板

Vue实现白板功能 使用Vue实现白板功能可以通过HTML5的Canvas API结合Vue的响应式特性来完成。以下是实现白板功能的关键步骤: 安装依赖 在Vue项目中安装必要的依赖,如vue-dr…