iview Tree 树形控件 回显数据处理

这是实现的效果

 load-data : 使用到 异步加载数据的方法 ,来渲染数据,默认会有两个传参 因为我们要回显,所以要用到第二个参callback,来处理成我们想要的数据

on-check-change  :点击复选框时触发 ,返回 当前已勾选节点的数组、当前项,使用这个基本可以满足业务要求了

show-checkbox:是否显示多选框

multiple:是否支持多选

给节点设置 (父子节点都适用)

expand:是否下拉

checked :全选状态

indeterminate: 半选状态

<template>
    <div>
        项目点类型
        <Tree
            :data="hospital"
            :load-data="hospitalLoad"
            ref="tree"
            @on-check-change="hospitalBtn"
            show-checkbox
            multiple
        ></Tree>
    </div>
</template>

<script>
export default {
    data() {
        return {
            hospital: [
                {
                    title: '医院',
                    loading: false,
                    expand: false, //下拉
                    checked: false, //全选状态
                    indeterminate: false, //半选状态
                    children: [],  // 这个是二级里面的数据
                },
            ],
            hospitalList: [
                {
                    title: '标题一',
                    id:'1',
                },
                {
                    title: '标题二',
                    id:'2',
                },
                {
                    title: '标题三',
                    id:'3',
                },
                {
                    title: '标题四',
                    id:'4',
                },
                {
                    title: '标题五',
                    id:'5',
                },
                {
                    title: '标题六',
                    id:'6',
                },
            ],
            sceneList:[
                {
                    title: '标题四',
                    id:'4',
                },
            ]
        };
    },
    methods: {
        async hospitalLoad(item, callback) {
            let ind = this.hospitalList.map(e => {
                //这处理你想要的数据,返回二级菜单的数据
                return {
                    title: e.title,  //这里的title是必要的,显示二级的标题
                    checked: false, //true 勾选  fales 不勾选
                };
            });
        //如果想处理回显可以在这里判断整体数据和返回数据是否相同,然后改变checked的值即可
            ind.forEach(i => {
                //sceneList假设是已经选择的数据
                this.sceneList.forEach(item => {
                    if (i.id== item.id) {
                        i.checked = true;
                    }
                });
            });
            callback(ind); //返回下拉内容
        },
        hospitalBtn(item) {
            console.log(item);
        },
    },
};
</script>

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
iview表格开启树形数据时,可能会出现卡顿的情况。解决这个问题的方法如下: 1. 数据量优化:如果树形数据量很大,可以考虑对数据进行优化处理,减少不必要的数据加载。例如,可以通过懒加载或分页的方式,只加载当前可见区域的数据,而不是一次性加载整个树形结构的数据。 2. 虚拟滚动:iview表格组件中的虚拟滚动功能可以用来优化树形数据的渲染和展示。通过设置合理的行高和总高度,以及可见区域的大小,可以减少不必要的DOM渲染,提高表格的性能。 3. 异步加载:如果树形数据较为庞大,可以考虑使用异步加载的方式,按需加载数据。可以通过监听表格的展开和折叠事件,在需要示子节点时,再通过异步请求获取相应的数据,并进行渲染。 4. 数据缓存:对于经常被访问的树形数据,可以将其缓存在前端,以减少后续的网络请求。可以使用缓存插件,将经常使用的数据缓存在内存中,从而提高数据的读取速度。 5. 优化渲染逻辑:通过对树形数据的遍历和渲染逻辑进行优化,减少不必要的计算和DOM操作,可以提高表格的渲染性能。例如,可以使用缓存机制,对已经渲染过的数据进行复用,避免重复渲染。 综上所述,通过对数据量优化、虚拟滚动、异步加载、数据缓存以及渲染逻辑的优化,可以有效解决iview表格开启树形数据时可能出现的卡顿问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值