el-tree懒加载数据改变后不能实时刷新问题

news2025/2/24 20:21:21
简介

设置lazy后,加载数据通过load获取,如果外部搜索条件改变,数据源变动后,el-tree仍然是老数据不更新最新数据,因为el-tree加载后会缓存,需要主动设置data去更新最新数据

效果

在这里插入图片描述

源码
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="referrer" content="no-referrer" />
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no, viewport-fit=cover" />
    <title>el-tree懒加载数据改变后不能实时刷新问题</title>
    <!-- 引入样式 -->
    <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.14/theme-chalk/index.min.css">
    <style>
        /* 页面所需样式 */
        html,
        body,
        #app {
            width: 100%;
            margin:0;
            padding: 0;
        }

        .cardBox {
            width: 50%;
            border-radius: 8px;
            display: flex;
            flex-direction: column;
            align-items: center;
            padding-top: 20px;
            margin: 0 auto;
        }
        .tree{
            width: 100%;
            margin-top: 20px;
        }

        
    </style>
</head>

<body style="background: #eee;">
    <div id="app" class="pt10">
        <div class="cardBox pl10 pr10 pt15 pb15 borBox bgf ml12 mr12 mb12 fz16">
            <p>设置lazy后,加载数据通过load获取,如果外部搜索条件改变,数据源变动后,el-tree仍然是老数据不更新最新数据,因为el-tree加载后会缓存,需要主动设置data去更新最新数据</p>
            <el-radio-group v-model="radio" @change="radioChange">
                <el-radio-button label="shanghai">上海</el-radio-button>
                <el-radio-button label="beijing">北京</el-radio-button>
            </el-radio-group>
            <el-tree class="tree" :load="loadNode" :data="treeData" lazy :props="defaultProps" node-key="name">
                <div slot-scope="{ node, data }" >
                    <span>{{ node.label }}</span>
                    <el-popconfirm title="确定下载吗?" @confirm="downFile(node, data)">
                        <el-button type="text" slot="reference" icon='el-icon-download'></el-button>
                    </el-popconfirm>
                </div>
            </el-tree>
        </div>
    </div>
</body>

<script src="https://lib.baomitu.com/vue/2.6.14/vue.js"></script>
<!-- 引入组件库 -->
<script src="https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.14/index.min.js"></script>

<script>
    new Vue({
        el: '#app',
        data() {
            return {
                radio:'shanghai',
                defaultProps: {
                    label: 'name',
                    children: 'children',
                    isLeaf: 'leaf'
                },
                treeData:[],
                allCity:{
                    shanghai:[
                        {
                            name: '浦东新区',
                            path: '/pudong',
                            leaf: false,
                            children:[
                                {
                                    name: '张江',
                                    path: '/zhangjiang',
                                    leaf: true
                                },
                                {
                                    name: '周浦',
                                    path: '/zhoupu',
                                    leaf: true
                                },
                                {
                                    name: '南汇',
                                    path: '/nanhui',
                                    leaf: true
                                },
                            ]
                        },
                        {
                            name: '临港新区',
                            path: '/pudong',
                            leaf: false,
                            children:[
                                {
                                    name: '滴水湖',
                                    path: '/dishuihu',
                                    leaf: true
                                },
                                {
                                    name: '海事大学',
                                    path: '/haishi',
                                    leaf: true
                                },
                                {
                                    name: '海洋大学',
                                    path: '/haiyang',
                                    leaf: true
                                },
                            ]
                        }
                    ],
                    beijing:[
                        {
                            name: '雄安新区',
                            path: '/xiongan',
                            leaf: false,
                            children:[
                                {
                                    name: '雄安一区',
                                    path: '/xyi',
                                    leaf: true
                                },
                                {
                                    name: '雄安二区',
                                    path: '/xer',
                                    leaf: true
                                },
                                {
                                    name: '雄安三区',
                                    path: '/xsan',
                                    leaf: true
                                },
                            ]
                        },
                        {
                            name: '朝阳区',
                            path: '/chaoyang',
                            leaf: false,
                            children:[
                                {
                                    name: '朝阳一区',
                                    path: '/cyi',
                                    leaf: true
                                },
                                {
                                    name: '朝阳二区',
                                    path: '/cer',
                                    leaf: true
                                },
                                {
                                    name: '朝阳三区',
                                    path: '/csan',
                                    leaf: true
                                },
                            ]
                        }
                    ]
                }
            }
        },
        created() {
            // 模拟点击改变搜索条件,请求接口,拿到新数据
            setTimeout(() => {
                this.treeData = this.allCity[this.radio]
            } ,300)   
        },
        mounted() {
            
        },
        methods: {
            // 条件切换
            radioChange(){
                // 模拟点击改变搜索条件,请求接口,拿到新数据
                setTimeout(() => {
                    this.treeData = this.allCity[this.radio]
                } ,300)    
            },
            // 动态加载
            loadNode(node, resolve) {
                if (node.level === 0) {
                    resolve(this.treeData)
                }else{
                    // 打开子目录
                    if(node.data.path){
                        // 模拟请求接口获取子集数据
                        setTimeout(() => {
                            resolve(node.data.children)
                        } ,300)
                    }
                }
            },
            // 下载文件
            downFile(node, data){
                window.location.href = `http://www.baidu.com/${encodeURIComponent(data.path)}`
            },
        }
    })
</script>

</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1889659.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序云开发引入车牌识别踩坑

创造灵感 因为我写的是一个汽车轮胎商城小程序,要记录客户车牌信息,用到了车牌识别,小程序的插件服务里面有ORC插件支持,只需要把这个插件的车牌识别引进来就能用,这个插件每天有100次的免费识别,基本就够用了,下面把引入的踩坑过程记录一下.如果有需要汽车轮胎的也可以到我们…

softmax从零开始实现

softmax从零开始实现 代码结果 代码 import numpy as np import torch import torchvision import torchvision.transforms as transforms from torch.utils import data# H,W,C -> C,H,W mnist_train torchvision.datasets.FashionMNIST(root"./data", trainTr…

《石化技术 》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答 问&#xff1a;《石化技术 》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的第一批认定学术期刊。 问&#xff1a;《石化技术 》级别&#xff1f; 答&#xff1a;国家级。主管单位&#xff1a;中国石油化工集团有限公司 主办单位&…

虚拟机下基于海思移植QT(一)——虚拟机下安装QT

0.参考资料 1.海思Hi3516DV300 移植Qt 运行并在HDMI显示器上显示 2.搭建海思3559A-Qt4.8.7Openssl开发环境 1.报错解决 通过下面命令查询 strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC_通过命令行没有解决&#xff1a; sudo apt install libc6-dev libc6参考解决…

内容监管与自由表达:Facebook的平衡之道

在当今数字化信息社会中&#xff0c;社交媒体平台不仅是人们交流和获取信息的主要渠道&#xff0c;也是自由表达的重要舞台。Facebook&#xff0c;作为全球最大的社交网络平台&#xff0c;连接了数十亿用户&#xff0c;形成了一个丰富多样的信息生态。然而&#xff0c;如何在维…

【小白教学】-- 安装Ubuntu-20.04系统

下载 Ubuntu-20.04 镜像 具体如何下载镜像&#xff0c;请移驾我上一篇文章。使用清华大学开源镜像站下载。https://zhuanlan.zhihu.com/p/706444837 制作 Ubuntu-20.04 系统盘 安装软件 UltralSO 开始制作系统盘 第一步&#xff0c;插入一个 u 盘&#xff0c;启动软件&#x…

博客的部署方法论

博客写完后&#xff0c;当然是要发布到网络上的。如果想要部署到服务器上&#xff0c;则需编译构建成静态文件&#xff0c;然后将其上传到服务器上的路径&#xff08;该路径由我们自己决定&#xff09;&#xff0c;然后在 web 服务器&#xff08;Nginx 等&#xff09;上配置访问…

1688商品点击率和转化上不去,这9个细节你肯定没优化!

一、点击率上不去的原因 1、主图设计不佳 ✘问题&#xff1a;主图不够吸引人&#xff0c;无法迅速抓住顾客的注意力。 ✔解决方案&#xff1a; 通过店雷达主图分析&#xff0c;查询市场上目前在此关键词下的所有商品主图&#xff0c;一键对比多个关键销售指标数据&#xff…

go-redis源码解析:cluster模式如何选择节点

1. 如何选择节点 1.1. 确定slot 1.1.1. 通过cmdSlot方法确定在哪个槽上, 这一步只是本地计算 首先入口方法_process&#xff0c;先通过cmdSlot方法用key计算此次应该落在哪个槽上 通过crc16sum算法计算key应该属于哪个槽&#xff0c;slotNumber为16384 func Slot(key strin…

【设计模式】策略模式(定义 | 特点 | Demo入门讲解)

文章目录 定义策略模式的结构 QuickStart | DemoStep1 | 策略接口Step2 | 策略实现Step3 | 上下文服务类Step4 | 客户端 策略模式的特点优点缺点 定义 策略模式Strategy是一种行为模式&#xff0c;它能定义一系列算法&#xff0c;并将每种算法分别放入到独立的类中&#xff0c…

Unity Shader技巧:实现带投影机效果,有效避免边缘拉伸问题

这个是原始的projector 投影组件,边缘会有拉伸 经过修改shader 后边缘就没有拉伸了 (实现代码在文章最后) 这个着色器通过检查每个像素的UV坐标是否在定义的边界内,来确定是否应用黑色边框。如果UV坐标处于边缘区域,那么像素颜色会被强制设为黑色,从而在投影图像周围形成一…

技术成神之路:设计模式(三)原型模式

1. 定义 原型模式&#xff08;Prototype Pattern&#xff09;是一种创建型设计模式&#xff0c;旨在通过复制现有对象来创建新对象&#xff0c;而不是通过实例化类的方式。这个模式可以提高对象创建的效率&#xff0c;尤其是在创建对象的过程非常复杂或代价高昂时。 2. 结构 原…

三分钟看懂SMD封装与COB封装的差异

全彩LED显示屏领域中&#xff0c;COB封装于SMD封装是比较常见的两种封装方式&#xff0c;SMD封装产品主要有常规小间距以及室内、户外型产品&#xff0c;COB封装产品主要集中在小间距以及微间距系列产品中&#xff0c;今天跟随COB显示屏厂家中品瑞一起快速看懂SMD封装与COB封装…

Let‘s Encrypt 申请免费 SSL 证书(60天以后自动更新证书)

文章目录 官网文档简介安装 Nginxacme.sh生成证书智能化生成证书 安装证书查看已安装证书更新证书 官网 https://letsencrypt.org/zh-cn/ 文档 https://letsencrypt.org/zh-cn/docs/ 简介 Let’s Encrypt 是一个非营利组织提供的免费SSL/TLS证书颁发机构&#xff0c;旨在促…

滚珠花键促进汽车产业整体升级与发展!

滚珠花键能够实现高效的传动和连接&#xff0c;确保物体在运动过程中的精确位置和稳定性&#xff0c;被广泛应用于机械制造、航空航天、工业自动化、工业汽车、工业机器人、高速铁路等领域。为各个行业的发展提供了重要支持&#xff0c;尤其是在工业汽车领域中&#xff0c;为我…

Spring系统学习-什么是AOP?为啥使用AOP?

问题思考 我们为啥要使用AOP? 来看一个案例&#xff1a; 声明计算器接口Calculator&#xff0c;包含加减乘除的抽象方法 public interface Calculator {int add(int i, int j);int sub(int i, int j);int mul(int i, int j);int div(int i, int j); }public class Calculat…

HNU电子测试平台与工具2_《计算机串口使用与测量》

&#xff08;这个有留word哈哈&#xff09; 4.1 4.2 Linux 操作系统平台 一、实验目的 了解 Linux 系统文件系统的基本组织了解 Linux 基本的多用户权限系统熟练使用 ls、cd、cat、more、sudo、gcc、vim 等基本命令会使用 ls 和 chmod 命令查看和修改文件权限 二、实…

使用机器学习,通过文本分析,轻松实现原本复杂的情感分析

01、案例说明 本期分享案例是&#xff1a;文字分析-情感分析&#xff0c;内容是关于某部电影评论好坏的分析&#xff0c;使用大量的已知数据&#xff0c;通过监督学习的方法&#xff0c;可以对于未知的评论进行判断其为正面还是负面的评价。 对于数据分析&#xff0c;原来都是…

contrastive loss and triplet loss

contrastive loss 想要positive pair 的距离接近0 而triplet loss只需要postive pair的距离 和 negtaive pair 的距离相差m以上, postive pair的距离不一定为0, 所以条件更松驰, 为网络训练更友好一点 reference: https://www.youtube.com/watch?vBcF6FfZHDqA

图书管理系统(含登录验证码操作)

文章目录 登录需求分析登录界面注册功能&#xff1a;登录功能&#xff1a;忘记密码&#xff1a;验证码规则&#xff1a; 图书管理系统需求Book包Book类BookList类 IOperation包IOperation接口查找图书新增图书删除图书显示图书借阅图书归还图书退出系统 User包user类Users类adm…