Element-Tree 树形控件节点懒加载(加载更多)
element
A Vue.js 2.0 UI Toolkit for Web
项目地址:https://gitcode.com/gh_mirrors/eleme/element
·
需求:
树形控件懒加载子节点,因子节点节点数量庞大,需要添加“加载更多”功能来加载余下节点数据。
解决方法:
1、懒加载子节点时,后端根据当前配置显示条数,返回对应条数树节点信息,若判断有更多节点信息,则在最后返回信息中添加一条more的标识信息。(此处不作详细描述)
2、前端懒加载子节点时,根据后端返回信息捕获到有more的标识信息,则在渲染子节点时处理该more的标识信息:
<span v-if="data.more" @click="onClickMore">
<span v-if="!data.loading">加载更多...</span>
<span v-else>正在加载中...</span>
</span>
在点击”加载更多“时触发onClickMore事件调用方法appendNodeMore():
appendNodeMore ({ node }) { // 此处的node为树形控件中点击的“加载更多”节点node信息
this.$set(node.data, 'loading', true) ; // 添加加载中状态
let treeRef = this.$refs['tree'] ; // 树形控件实例ref
let { id, page } = node.data ; // id:需要加载更多的节点的父节点id; page:第几次加载更多(类似分页)
this.$post('getMoreNode', { id, page: page+1 }) // 此处需要page+1加载下一个更多
.then(r => {
let _data = r.data || [] ;
// 根据后端返回节点数据插入到树形控件中
_data.reverse().forEach(item => {
treeRef.insertAfter(item, node) ;
}) ;
treeRef.remove(node) ; // 删除“加载更多”
})
.catch(() => {
this.$Message.error({content: '获取更多节点内容失败', duration: 3}) ;
})
}
后端getMoreNode在获取到查询信息后,根据条件添加返回more的标识信息:
_total := _res['total'] ; // _total:数据库返回该子节点的所有条数
_info := _res['info'] ; // info:数据库分页查询出来的结果
// 判断当前返回的条数信息是否是最后的条数信息
if (_page*_pagesize) < _total then
begin
_info.push({'more': true, 'page': _page, 'id': _id, 'isleaf': true}) ; // _id:需要加载更多的节点的父节点id;_page:当前第几次“加载更多”
end
return _info ;
3、总结:Element-Tree 树形控件中使用insertAfter()方法插入节点信息;使用remove(node)方法删除节点信息;后端返回more的标识信息。
A Vue.js 2.0 UI Toolkit for Web
最近提交(Master分支:3 个月前 )
c345bb45
1 年前
a07f3a59
* Update transition.md
* Update table.md
* Update transition.md
* Update table.md
* Update transition.md
* Update table.md
* Update table.md
* Update transition.md
* Update popover.md 1 年前
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)