el-thee懒加载删除某条数据 ,el-thee懒加载重置,el-thee革新某个节点 ...

打印 上一主题 下一主题

主题 825|帖子 825|积分 2475

 一、懒加载的tree已经全部睁开,外部点击删除的时候不必要重新睁开点击获取下一层数据

  1. <template>
  2. <el-tree
  3.               ref="tree"
  4.               :data="treeData"
  5.               :props="defaultProps"
  6.               render-after-expand
  7.               highlight-current
  8.               lazy
  9.               :expand-on-click-node="false"
  10.               @node-click="handleNodeClick"
  11.               :default-expanded-keys="defaultexpanded"
  12.               :node-key="defaultProps['id']"
  13.               :default-checked-keys="defaultchecked"
  14.               :load="loadNode">
  15.               <span class="custom-tree-node" slot-scope="{ node }">
  16.                 <span v-if="node.level === 1" class="ewf-deptonelevel font16">{{
  17.                   node.label
  18.                 }}</span>
  19.                 <span v-else class="ewf-depttwolevel">{{ node.label }}</span>
  20.               </span>
  21.             </el-tree>
  22. </template>
  23. <script>
  24. export default {
  25.   data() {
  26.     return {
  27.       treeName: "",
  28.       treeHeight: "500px",
  29.       treeData: [],
  30.       defaultchecked: [],
  31.       defaultexpanded: ["all"],
  32.       defaultProps: {
  33.         children: "children",
  34.         label: "categoryName",
  35.         id: "iidd",
  36.         isLeaf: "leaf",
  37.       },
  38.     };
  39.   },
  40.   methods: {
  41.     // 点击的时候记录当前 点击的data 和 node
  42.     handleNodeClick(data,node) {
  43.       this.currentData = data
  44.       this.currentNode = node
  45.     },
  46.    
  47.     // tree外部点击删除,并且不用初始化tree
  48.     deleteFn(){
  49.       // 删除接口调用成功的时候,再调用这个方法
  50.       this.$refs.tree.remove(this.data); // 通过节点id找到对应树节点对象
  51.     },
  52. }   
  53. }
  54. </script>
复制代码
二、重置懒加载的tree
  1.     // 重置的时候调用这个方法
  2.     resetAllTree() {
  3.       this.node.childNodes = []
  4.       // this.node, this.resolve 在 loadNode 获取
  5.       this.loadNode(this.node, this.resolve)
  6.     },
  7.    
  8.     // 页面加载完成时,elmement-ui 会默认自动调用一次
  9.     loadNode(node, resolve) {
  10.       if (node.level === 0) {
  11.         // 第一次的时候记录 node, resolve ,重置的时候需要用到
  12.         this.node = node
  13.         this.resolve = resolve
  14.         return resolve([
  15.           {
  16.             iidd: "all",
  17.             categoryName: "全部分类",
  18.           },
  19.         ]);
  20.       } else if (node.level === 1) {
  21.         this.getTreeData().then((res) => {
  22.           resolve(res);
  23.         });
  24.       } else {
  25.         this.getTreeData(node).then((res) => {
  26.           resolve(res);
  27.         });
  28.       }
  29.     },
  30. getTreeData(node) {
  31.       return new Promise((resolve, reject) => {
  32.         let params = {
  33.           sourceSystem:this.sourceSystem
  34.         }
  35.         if(node && node.data && node.data.iidd){
  36.           params.iidd = node.data.iidd
  37.         }
  38.         // 调用接口
  39.         retrieveLazyMenus(params).then((res) => {
  40.           res.data.forEach(el => {
  41.             // hasChildren 接口返回的字段,用来表示是否还有子级数据
  42.             el.leaf = !el.hasChildren
  43.           })
  44.           resolve(res.data);
  45.         });
  46.       });
  47.     },
复制代码
三、如顶部图片所示,给某一项新增子级数据,不初始化tree
  1.     // 新增的时候记录当前 点击的data 和 node
  2.     handleNodeClick(data,node) {
  3.       this.currentData = data
  4.       this.currentNode = node
  5.     },
  6.     // 调用新增接口后,然后再初始化当前节点,而不是初始化整个tree
  7.     add(){
  8.       // 获取当前节点,key可以在@node-click和:load绑定函数的回调参数node用变量存储后有需要刷新的地方取node.key
  9.       let node = this.$refs.tree.getNode(this.currentNode.key);
  10.       //  设置未进行懒加载状态
  11.       node.loaded = false;
  12.       // 重新展开节点就会间接重新触发load达到刷新效果
  13.       node.expand();
  14.     }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

愛在花開的季節

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表