加载效果

如果使用 EasyUI tree 加载10000+项菜单项,全部加载出来耗时10s+,改为异步后,瞬间加载完成,极大提升用户体验。下图小圆圈是正在加载的菜单项效果。

Easyui tree 异步树

EasyUI官方文档
EasyUI 创建异步树形菜单 - 官方教程示例

树支持内置的异步加载模式,因此用户可以创建一个空的树,然后指定一个动态返回 JSON 数据的服务器端,用于根据需求异步填充树。
官方给了一个 PHP 的示例,这里就不贴代码了。

下面放上使用 Python Flask 创建异步树的代码示例:

表结构:

view层

@main.route('/basic_tree_fast/', methods=['GET', 'POST'])
@login_required
def basic_tree_fast():result = Basic_menu.query.filter_by(isactive=True, pid=0).order_by(Basic_menu.id.asc()).all()return render_template('basic_tree_fast.html', result=result)@main.route('/basic_tree_async/', methods=['GET', 'POST'])
@login_required
def basic_tree_async():"""异步树"""param_dic = request.values.to_dict()pid = convert.get_pid_from_dic(param_dic)result = Basic_menu.query.filter_by(isactive=True, pid=pid).order_by(Basic_menu.id.asc()).all()node_list = []for one in result:node = {}state = convert.closed_or_open(convert.has_child(one.id))node['id'] = one.idnode['text'] = one.namenode['state'] = statenode['attributes'] = one.urlnode_list.append(node)return json.dumps(node_list)

工具类

def has_child(id):"""判断某个菜单是否有子节点"""result = Basic_menu.query.filter_by(isactive=True, pid=id).all()if result:return Trueelse:return Falsedef closed_or_open(has_child):if has_child:return 'closed'else:return 'open'

前端 HTML 代码

<div id="basic_menu" data-options="region:'west',title:'菜单',split:true" style="width:200px;"><ul id="tree" class="easyui-draggable" style="padding: 10px" data-options="handle:'#title'"></ul>
</div><script type="text/javascript">//异步加载树内容$('#tree').tree({url:'{{ url_for('main.basic_tree_async') }}',checkbox: "true",onlyLeafCheck:true,//仅叶子结点带有复选框lines: true,prerendered: false,// 提前渲染onClick: function(node) { //拼装最后一个参数// do something}}});// 清除勾选function clean() {var selected = $('#tree').tree('getChecked');for (var i = 0; i < selected.length; i++) {$('#tree').tree('uncheck', selected[i].target)}}// 重新加载树function reset() {$("#tree").tree("reload");}
</script>

一个小问题


使用异步加载树时,不知什么原因,官方提供的$("#tree").tree("collapseAll");失效,无法一次性折叠全部节点。

因此使用$("#tree").tree("reload");作为替代,这样做的缺点是折叠后不能保持原有已经勾选的框框。

【EasyUI tree】Python 异步菜单树的实现相关推荐

  1. easyui menu tree 实现左侧菜单树

    1.首先引入easyui 相关js和样式. 2.构建树     <ul id="tree" class="easyui-tree"></ul& ...

  2. easyUI tree 异步加载数据

    easyUI 的 Tree组件在大部分时候都要从数据库读取数据,本文基于Java语言来实现easyUI tree的异步加载. 先看一下实现的效果: 整个过程采用的是简单三层架构,无论采用哪种模式,只要 ...

  3. 使用EasyUI Tree异步加载JSON数据 生成树

    这几天因为工作需要,要做一个支持无限级的菜单. 我也是菜鸟一只,能想到的东西不多,所以用了Easy UI的tree组件. 不得不说,easyui确实很强大. 因为是无限级菜单,数据量可能有点大,所以考 ...

  4. 数据库树形结构,EasyUI Tree 树

    通过 $.fn.tree.defaults 重写默认的 defaults. 树(tree)在网页中以树形结构显示分层数据.它向用户提供展开.折叠.拖拽.编辑和异步加载功能. 树的数据格式(Tree D ...

  5. php easyui tree 结构,EasyUI Tree树组件无限循环的解决方法

    在学习jquery easyui的tree组件的时候,在url为链接地址的时,发现如果最后一个节点的state为closed时,未节点显示为文件夹,单击会重新加载动态(Url:链接地址)形成无限循环. ...

  6. Huffman Tree哈夫曼树权值路径长度WPL计算,binarytree ,Python

    Huffman Tree哈夫曼树(霍夫曼树.赫夫曼树)权值路径长度WPL计算,binarytree ,Python 计算定义:把构建成功的哈夫曼树的每一个边缘节点(叶子)值乘以该节点到根的路径长度,最 ...

  7. EasyUI Tree判断节点是否是叶

    方法1:  $('#domaincatalog').tree('isLeaf', node.target); 返回true或false ,true表示是叶节点, false即不是 方法2:官方文档中: ...

  8. 6.easyui+ztree案例:zTree树

    做的就是西部区域面板中的树形导航图. Easyui中也有树,但是这个树不够强大. zTree性能非常好,功能强大. 介绍: l  什么是zTree呢? zTree是一个依靠jQuery实现的多功能&q ...

  9. Jquery easyui tree的使用

    这个ui用的一切都是json数据.树也是如此! 后台需要返回与格式匹配的json数据才能正确加载树. 页面定义一个ui: [html]  view plain copy print ? <ul  ...

最新文章

  1. 场景切换 异步加载 loading条做法
  2. 编写Java程序最容易犯的21种错误
  3. POJ - 3662 Telephone Lines(分层图最短路)
  4. springmvc ajax 页面无法重定向问题!!!!
  5. P标签如何取消上下间隔
  6. python基础(十):异常和断言
  7. 剑指offer——面试题41:和为S的连续整数序列
  8. PASCAL VOC数据集分析及下载、解压
  9. 杭州软件测试工程师培训
  10. php读取 rinex,用Pandas读取GPS RINEX数据
  11. PHP call_user_func_array回调函数 call_user_func_array函数详解
  12. sklearn的系统学习——决策树分类器(含有python完整代码)
  13. html5交互设计,国外五个交互设计很棒的酷站推荐,酷毙了
  14. 中国二维码--汉信码(中国主导的首个二维码码制国际标准「汉信码」ISO/IEC 20830:2021《信息技术 自动识别与数据采集技术 汉信码条码符号规范》)
  15. Microsoft OLE DB Provider for ODBC Drivers 错误 ‘80004005‘ 兼容
  16. 开放集识别之GPD and GEV Classi ers
  17. 计算机与信息学院开学致辞,计算机与信息工程学院举行2017级新生开学典礼
  18. hive报错return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
  19. Unity 制作愤怒的小鸟
  20. 拥有百万粉丝的大牛讲述学Android的历程,附赠课程+题库

热门文章

  1. 图书管理系统c++_校园图书系统写后感
  2. UVA - 10384The Wall Pushers推门游戏(迭代加深)
  3. [luogu3676]小清新数据结构题
  4. PostgreSQL学习笔记6之函数和操作符二
  5. 秒杀多线程第八篇 经典线程同步 信号量Semaphore
  6. #pragma预处理命令
  7. twisted.internet.error.TimeoutError错误的解决方法
  8. Python2与Python3之间的区别?
  9. 手写带注册中心的rpc框架(Netty版和Socket版)
  10. Go 内存对齐的那些事儿