• jquery jstree的懒加载


    效果如下


     使用jquery的jstree组件

    1.前端准备工作

    1.1引入jstree样式和js
    1. <link rel="stylesheet" href="/public/vendor/jstree/jstree.css">
    2. <div id="departmentJstree">div>
    3. <script src="/public/vendor/jstree/jstree.min.js">script>
    1.2编写代码,实现懒加载
    1.2.1 配置jstree
    1. // 获取部门树配置参数
    2. var depTreeOptions = function (type, status) {
    3. var options = {
    4. types: {
    5. default: {
    6. icon: 'fa-building-o'
    7. }
    8. },
    9. // search: {
    10. // show_only_matches: true,
    11. // show_only_matches_children: true
    12. // },
    13. // types
    14. plugins: ['core', 'wholerow', 'search'],
    15. core: {
    16. check_callback: true,
    17. // function (obj, callback)
    18. data: {
    19. url(node, callback) {
    20. // 后端提供一个接口返回单个数组的
    21. return $.configs.ctx + '/biz/project/api/info/tree/fileType'
    22. },
    23. data: function (node) {
    24. console.log(node)
    25. let { original } = node;
    26. return { ...original, id: node.id };
    27. }
    28. },
    29. 'expand_node': function (node, callback) {
    30. var depth = this.get_node(node).parents.length;
    31. // 默认展开的层级为 4(包括根节点)
    32. if (depth <= 2) {
    33. callback();
    34. }
    35. }
    36. }
    37. };
    38. // 渲染批量修改部门树
    39. if (type === 'modify') {
    40. options.plugins.push('checkbox');
    41. options.checkbox = {
    42. three_state: false
    43. };
    44. }
    45. return options;
    46. };
    1.2.2 实现tree
    1. $('#departmentJstree').jstree(depTreeOptions('display', status))
    2. .on('ready.jstree', function () {
    3. // 加载完做的事,针对个人业务的。
    4. depTree = $(this).jstree(true);
    5. // depTree.open_all();
    6. console.log(that)
    7. // page.load.dataTable();
    8. // that.oTable.ajax.reload();
    9. // 重新加载
    10. // that.dataTable();
    11. // that.load.dataTable();
    12. })
    13. .on('select_node.jstree', function () {
    14. // 点击重新加载右侧的数据。
    15. // 如果选了是文件类型的 上传附件要出来
    16. if (depTree) {
    17. var node = depTree.get_selected(true)[0];
    18. if (node) {
    19. treeId = node.original.id;
    20. treeType = node.original.type;
    21. treeParentd = node.original.dataId;
    22. }
    23. console.log(node)
    24. if ('04' == treeType) {
    25. $("#upload-file").show();
    26. } else {
    27. $("#upload-file").hide();
    28. }
    29. } else {
    30. $("#upload-file").hide();
    31. }
    32. // 重载成员信息
    33. that.oTable.ajax.reload();
    34. // 更新全选按钮状态
    35. $('#lockDataTable')
    36. .find('.selectable-all')
    37. .prop('checked', false);
    38. });

    2.后端工作

    2.1编写 /biz/project/api/info/tree/fileType接口,返回的数据格式,单个的数组,children返回的是true跟false类型

  • 相关阅读:
    Git操作远程仓库及解决合并冲突
    ECMAScript6介绍及环境搭建
    uniapp表单验证
    快应用参数传递
    Python 通过selniumwire调用企查查原生接口抓取企查查公开企业信息全过程——以抓取成都500万家企业为例
    WebGL笔记:WebGL中的顶点着色器尺寸,颜色的修改
    一键搞定centos7的docker+selenium+appium+jenkins+android_app源码打包成apk的环境搭建
    算法基础:贪心策略
    【AI】大数据机器学习—统计学习及监督学习概论
    法国生物制药公司【Abivax SA】申请1亿美元纳斯达克IPO上市
  • 原文地址:https://blog.csdn.net/weixin_42066070/article/details/132764545