本文介绍了VUE饿了么树形控件添加增删改功能的示例代码,分享给大家,具体如下:
element-ui树形控件:地址
在原文档中有个案例是有新增和删除功能,但是后来发现其修改的数据并不能直接影响到树形数据,所以采用了 render-content 的API重新写了个组件。
写个开发的步骤,所以文章比较长emmm
大致效果如图:
1.省市API
在网上复制了个省市的list,有两个属性是新增的
- isEdit :控制编辑状态
- maxexpandId :为现下id的最大值
export default{ maxexpandId: 95, treelist: [{ id: 1, name: "北京市", ProSort: 1, remark: "直辖市", pid: '', isEdit: false, children: [{ id: 35, name: "朝阳区", pid: 1, remark: '', isEdit: false, children: [] }] }{...}] }
2.el-tree Component基本
咱们一步步来,先写个饿了么的组件
<template> <el-tree ref="expandMenuList" class="expand-tree" v-if="isLoadingTree" :data="setTree" node-key="id" highlight-current :props="defaultProps" :expand-on-click-node="false" :render-content="renderContent" :default-expanded-keys="defaultExpandKeys"></el-tree> </template> <!-- * highlight-current :为了点击时节点高亮 * expand-on-click-node : 只能箭头控制树形的展开收缩 * render-content : 节点渲染方式 * default-expanded-keys :默认展开节点 -->
同时引入API和节点渲染的组件
import TreeRender from '@/components/tree_render' import api from '@/resource/api'
然后搭建好基础
data(){ return{ maxexpandId: api.maxexpandId,//新增节点开始id non_maxexpandId: api.maxexpandId,//新增节点开始id(不更改) isLoadingTree: false,//是否加载节点树 setTree: api.treelist,//节点树数据 defaultProps: { children: 'children', label: 'name' }, defaultExpandKeys: [],//默认展开节点列表 } },
添加个渲染的method
methods: { renderContent(h,{node,data,store}){ let that = this;//指向vue return h(TreeRender,{ props: { DATA: data,//节点数据 NODE: node,//节点内容 STORE: store,//完整树形内容 }, on: {//绑定方法 nodeAdd: ((s,d,n) => that.handleAdd(s,d,n)), nodeEdit: ((s,d,n) => that.handleEdit(s,d,n)), nodeDel: ((s,d,n) => that.handleDelete(s,d,n)) } }); }, handleAdd(s,d,n){//增加节点 console.log(s,d,n) }, handleEdit(s,d,n){//编辑节点 console.log(s,d,n) }, handleDelete(s,d,n){//删除节点 console.log(s,d,n) } }
内容版权声明:除非注明,否则皆为本站原创文章。