vue实现下拉树——vue-treeselect

vue实现下拉树——vue-treeselect

官网入口: 里面提供了各种api,本章只简单介绍如何引用此组件以及一些简单功能。

npm下载安装插件指令

npm install --save @riophae/vue-treeselect

下面是我的一个例子

<template>
	<TreeSelect 
		v-model="treeValue" 
		:multiple="true" 
		:options="treeOptions"/>
</template>

<script>
    import {
          
   getProductCatrgory} from "@/api/index";
    import TreeSelect from @riophae/vue-treeselect;   //引用下拉树组件
    import @riophae/vue-treeselect/dist/vue-treeselect.css;
    export default {
          
   
        name: "testTreeSelect",
        components: {
          
   TreeSelect},
        data() {
          
   
        	return {
          
   
        		treeOptions: [], 	//下拉树数据
        		treeValue: [],        //下拉树框内值
        	}
        },
        methods: {
          
   
			getTreeData() {
          
   
				//调用后台接口查找数据
                getCatrgoryTree().then(res => {
          
   
                	this.treeOptions = res.data.list;
                }).catch(err => {
          
   
                    console.log(err);
                });
            },
		},
		mounted() {
          
   
            this.getTreeData();
        },
	}
</script>

<style scoped>
   
</style>

这棵树默认的数据结构是:

{
          
   
    "id" : "",
    "label" : "",
    "children" : []
}

特别需要注意的是,如果当前分类下面没有子分类的话,要把children删掉,还有鉴于后台接口返回的数据未必会有label属性,所以有的时候还需要给树的每个label赋值,下面是我用递归处理的

//递归树结构
recursiveTree(tree) {
          
   
	//格式化:清掉空的children,将title换成label
    tree.map(item => {
          
   
        item.label = item.title;
        if (item.children) {
          
   
            item.children.map(child => {
          
   
                child.label = child.title;
            });
            this.recursiveTree(item.children);
        } else {
          
   
            delete item.children
        }
    })
 },
经验分享 程序员 微信小程序 职场和发展