Tree 树形控件自定义显示样式与hover事件绑定实现添加、删除和修改

Element Tree 树形控件自定义显示样式与hover事件绑定实现添加、删除和修改

最近在搞erp项目对应后台的管理功能,为了加速开发使用了 vue-element-admin 开发,使用的是elementUi框架,在项目中使用element的树形控件的时候遇到点问题,分享给大家。
首先先了解一下树形控件: elementTree 树形控件.

我的项目需求是实现鼠标hover上去的时候在对应的树形结构后面显示 添加 修改 和 删除 并实现功能,查看了对应element文档刚好有类似的功能,

在这里插入图片描述
这个自定义结点内容写的也未免有点太唐突了点…要完成项目需求是远远不够的,再往下找,没有了


当我尝试使用element的自定义结点,给对应的结点添加v-show="false"发现却并没有起作用,怀疑是自己写法错误,找一个案例测了一下,不是我的问题,想起来曾经使用过iview脚手架,也做过类似的操作于是找了出来.修改一下完成了需求

   <--这是我的树形控件--> 
    <el-tree :data="data4" show-checkbox node-key="value" default-expand-all :expand-on-click-node="false" :render-content="renderContent">
    </el-tree>


renderContent 是自定义显示的回掉 绑定的data4是参照element但是我让添加了一个is_show 字段,后来想想可以使用本地中间变量来判断

renderContent(h, {
                node,
                data,
                store
            }) {
                return h('span', {
                    style: {
//                        color: "red",
                    },
                    //这里添加hover事件
                    on: {
                        'mouseenter': () => {
                            data.is_show = true;
                        },
                        //鼠标离开
                        'mouseleave': () => {
                            data.is_show = false;
                        }
                    }
                }, [
                    h('span', {
                        //显示名称
                    }, node.label),
                    h('span', {
                        style: {
                            display: data.is_show ? '' : 'none',
                        },
                    }, [
                        //添加
                        h('el-button', {
                            props: {
                                type: 'text',
                                size: 'small',
                            },
                            style: {
                                marginLeft:"15px",
                            },
                            on: {
                                click: () => {
                                    this.append(data)
                                }
                            }
                        }, "添加"),
                        h('el-button', {
                            props: {
                                type: 'text',
                                size: 'small',
                            },
                            style: {

                            },
                            on: {
                                click: () => {
                                    this.amend(data)
                                }
                            }
                        }, "修改"),
                        h('el-button', {
                            props: {
                                type: 'text',
                                size: 'small',
                            },
                            style: {

                            },
                            on: {
                                click: () => {
                                    this.remove(node, data)
                                }
                            }
                        }, "删除"),
                    ]),
                ]);
            }


这些工作做完了来看一下效果(数据仅为模拟数据)

大功告成,添加,修改,和删除就简单了这里就不贴出来了,
另外,在添加鼠标事件的时候还遇到一个问题,比如click事件这样写

on: {
                                click: () => {
                                    this.append(data)
                                }
                            }


但是鼠标事件就得添加"",

on: {
                        'mouseenter': () => {
                            data.is_show = true;
                        },
                        //鼠标离开
                        'mouseleave': () => {
                            data.is_show = false;
                        }
                    }


还是有点坑的…!
————————————————
转载 : https://blog.csdn.net/wxfdpp/article/details/83624460

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章