vue基于Element构建自定义树实例方法

做项目的时候要使用到一个自定义的树形控件来构建表格树,在github上搜了一下没有搜索到合适的(好看的)可以直接用的,查看element的组件说明时发现它的tree控件可以使用render来自定义节点样式,于是基于它封装了一个可以增、删、改的树形组件,现在分享一下它的使用与实现。本文主要和大家介绍vue基于element构建自定义树的示例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。

控件演示

github上挂的gif可能会比较卡,有没有大佬知道还有哪里可以挂静态资源的,谢谢。。!

vue基于Element构建自定义树实例方法

控件使用

概要

立即学习“前端免费学习笔记(深入)”;

基于element-ui树形控件的二次封装

提供编辑、删除节点的接口

提供一个next钩子,在业务处理失败时可使用next(false)回滚操作

控件源码见 github

文档

props

属性 说明 类型

value源数据,可使用v-model双向绑定Array

events

事件名 说明 参数

SaveEdit点击编辑或者添加树节点后的保存事件(父节点数据、当前节点数据、next)DelNode删除节点事件(父节点数据、当前节点数据、next)NodeClick节点点击事件(当前节点数据)

源数据描述

属性 说明

value树节点的唯一标识label树节点的显示名称status(1:编辑状态)(0:显示状态)(-1不可编辑状态)children子节点数据

调用示例

 SaveEdit(parentNode,data,next){  var param = {   parentNode:parentNode,   node:data  }  this.$http.post(URL,param).then((response) => {   if(response.status == 200){    next(true,response.body.data.nodeId)   }else{    next(false)   }  })}

登录后复制

实现方式

构建子节点的模板

               {{node.label}}                             

登录后复制

子节点通过$emit通知父节点事件

SaveEdit(){  //保存节点事件  this.$emit('SaveEdit',this.nodeData)},

登录后复制

父节点核心实现,使用renderContent函数加载子节点模板,点击保存节点时将业务参数保存在runParam中用于在业务操作失败(网络请求失败、服务端异常等情况)的数据回滚

      //子节点模板  renderContent(h, { node, data, store }) {    return h(TreeItem,{     props:{      value:data,      treeNode:node     },     on:{      input:(node)=>{       data = node      },      Append: () => {       node.expanded = true       data.children.push({ value: this.$utilHelper.generateUUID(), label: '请输入模块名称', children: [],status:1,isAdd:true })      },      //保存节点      SaveEdit:(nodeData)=> {       //递归查找父节点       var parentNode = this.$utilHelper.getNode(this.treeData,data.value).parentNode       this.runParam.parentNode = parentNode       this.runParam.data = data       this.runParam.nodeData = nodeData       this.$emit('SaveEdit',parentNode,data,this.CanSaveNext)      }     }    })   }

登录后复制

操作结果钩子,如果next函数传入false则判定操作失败,使用runParam中的参数进行回滚,该节点的编辑保存操作将无效。

相关推荐:

vuejs使用递归组件实现树形目录

PHP实现从上往下打印二叉树的方法

JavaScript实现树的遍历算法示例

以上就是vue基于Element构建自定义树实例方法的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2787371.html

(0)
上一篇 2025年3月8日 18:06:51
下一篇 2025年3月6日 14:25:52

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • shiro授权的实现原理实例分享

    授权,也叫访问控制,即在应用中控制谁能访问哪些资源(如访问页面/编辑数据/页面操作等)。在授权中需了解的几个关键对象:主体(subject)、资源(resource)、权限(permission)、角色(role)。本文主要和大家介绍shi…

    2025年3月8日
    200
  • react前后端同构渲染实例分享

    前后端同构渲染:当客户端请求一个包含react组件页面的时候,服务端首先响应输出这个页面,客户端和服务端有了第一次交互。然后,如果加载组件的过程需要向服务端发出ajax请求等,客户端和服务端又进行了一次交互,这样,耗时相对较长。前后端同构渲…

    2025年3月8日
    200
  • 微信小程序template模板引用实例分享

    本文主要和大家介绍微信小程序视图template模板引用的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下,希望能帮助到大家。 微信小程序视图template模板引用的实例详解 WXML 提供两种文件引用方式import和…

    2025年3月8日
    200
  • 4种Vue组件通信方式实例分享

    本文主要和大家分享4种vue组件通信方式:父子组件的通信、非父子组件的eventbus通信、利用本地缓存实现组件通信、vuex通信。希望能帮助到大家。 第一种通信方式:父子组件通信 父组件向子组件传递数据 父组件一共需要做4件事 1.imp…

    编程技术 2025年3月8日
    200
  • VUE页面加载外部HTML实例详解

    前后端分离,后端提供了接口。但有一部分数据,比较产品说明文件,是存在其他的服务器上的。所以,在页面显示的时候,如果以页面内嵌的形式显示这个说明文件。需要搞点事情以达到想要的效果。本文主要和大家介绍了vue页面中加载外部html的示例代码,小…

    2025年3月8日
    200
  • Bootstrap自定义confirm的提示效果分享

    本文主要和大家详细介绍集合bootstrap自定义confirm提示效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。 效果 这里写图片描述 js端 var Common = {  confirm:function(…

    编程技术 2025年3月8日
    200
  • jQuery表单元素选择器实例讲解

    本文主要和大家详细介绍了jquery选择器之表单元素选择器的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。 nbsp;html>         input{ display: block; margi…

    2025年3月8日
    200
  • .vue文件的生成和使用实例分享

    这几天新项目用vue2.0开发,由于之前没用过vue,拿到项目框架看到都是.vue文件,本文主要和大家介绍vue2.0开发入门笔记之.vue文件的生成和使用,非常具有实用价值,需要的朋友可以参考下,希望能帮助到大家。 不知道怎么用,以下是关…

    2025年3月8日 编程技术
    200
  • vue粒子特效实例分享

    本文主要和大家介绍vue 粒子特效的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 实现效果: 没错,你看到的上图那些类似于星座图的点和线,是由vue-particles生成的,而且…

    2025年3月8日
    200
  • Nginx设置前后端分离实例代码

    本文主要和大家分享nginx设置前后端分离实例代码,为了帮助大家更好的掌握nginx设置前后端分离,本文分享的代码很详细,希望能帮助到大家。 #user nobody;worker_processes 1;#error_log logs/e…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论