分页加载 加载完成逻辑_一种TreeView组件分页异步加载的方法

本文探讨了一种适用于100w级目录节点的TreeView组件分页异步加载策略。通过分析无限滚动长列表和基于DOM复用的优化,提出视图层向外索要数据的解决方案,包括建立空树、视图层抛出数据需求事件和控制器的网络请求队列管理,确保树形结构的高效加载和用户体验。
摘要由CSDN通过智能技术生成

笔者在工作中遇到了一个web环境需要展示100w级目录节点treeview的需求,本文重点介绍笔者设计的一种treeView分页的方法。

1、无限滚动长列表

前端的业务开发中会遇到数量很大的列表展示情况,一般的处理方法是使用某种方法分屏分页的加载数据。

通常的做法是检测是否滚动到底,然后进行网络请求操作。

const maxScrollTop = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight) - window.innerHeight;const currentScrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);if (maxScrollTop - currentScrollTop < 20) {
      //… getNext}

一般情况下,这种方法已经够用。

但是,万一,列表的每一项结构复杂,用户又有可能上下滚动一整天呢?

我们来稍微测试下:

 let start = new Date(); let imgUrl = 'http://127.0.0.1/profile.jpg'; let containerDom = document.getElementById('container'); cons
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Bootstrap Treeview 是一个基于 Bootstrap 的树形控件插件,它可以用来展示层级数据。如果你需要异步加载数据,可以按照以下步骤进行操作: 1. 在 Treeview 的初始化选项中设置 `dataUrl` 属性,该属性指定了数据的远程加载地址。 ``` $('#treeview').treeview({ dataUrl: '/api/data', // 其他选项 }); ``` 2. 在服务端编写接口,返回 JSON 格式的数据。 ``` [{ "text": "Node 1", "nodes": [ { "text": "Node 1.1", "nodes": [] }, { "text": "Node 1.2", "nodes": [] } ] }, { "text": "Node 2", "nodes": [] }] ``` 3. 在 Treeview 的初始化选项中设置 `lazyLoad` 属性为 `true`,该属性表示启用懒加载模式。 ``` $('#treeview').treeview({ dataUrl: '/api/data', lazyLoad: true, // 其他选项 }); ``` 4. 当 Treeview 加载到一个节点时,它会发送一个 HTTP GET 请求到 `dataUrl` 指定的地址,并附带 `nodeId` 参数,该参数表示当前节点的标识符。服务端需要根据 `nodeId` 参数返回该节点的子节点数据。 5. 在服务端编写接口,接收 `nodeId` 参数,根据该参数返回对应节点的子节点数据。 ``` /api/data?nodeId=1 ``` 6. 在服务端返回数据时,需要将数据格式化成 Treeview 所需的格式。例如,需要将子节点数据放到一个名为 `nodes` 的属性中。 ``` { "text": "Node 1", "nodes": [ { "text": "Node 1.1", "nodes": [] }, { "text": "Node 1.2", "nodes": [] } ] } ``` 以上就是使用 Bootstrap Treeview 实现异步加载数据的步骤。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值