element 树形控件el-tree 添加hover事件 完整代码

这篇博客介绍了如何使用Vue.js创建一个树形组件,包括默认展开所有节点、过滤节点方法以及通过自定义渲染内容实现节点悬停显示操作按钮(添加、编辑、删除)。在`renderContent`方法中,利用`on-mouseover`和`on-mouseout`事件控制节点的显示状态,并提供了数据操作的方法。
  <el-tree class="filter-tree" :render-content="renderContent" :data="data" :props="defaultProps" default-expand-all :filter-node-method="filterNode"
    ref="tree">
  </el-tree>
  export default {
    data() {
      return {    
        data: [{
          id: 1,
          label: '一级 1',
          is_show:false,
          children: [{
            id: 4,
            label: '二级 1-1',
            is_show:false,
            children: [{
              id: 9,
              is_show:false,
              label: '三级 1-1-1'
            }, {
              id: 10,
              is_show:false,
              label: '三级 1-1-2'
            }]
          }]
        }],
        defaultProps: {
          children: 'children',
          label: 'label'
        }
      }
    },
  methods: {
        append(data) {
        const newChild = { id: id++, label: 'testtest', children: [] };
        if (!data.children) {
          this.$set(data, 'children', []);
        }
        data.children.push(newChild);
      },

      remove(node, data) {
        const parent = node.parent;
        const children = parent.data.children || parent.data;
        const index = children.findIndex(d => d.id === data.id);
        children.splice(index, 1);
      },
      /**这里是关键一步,实现hover */
      renderContent(h, { node, data, store }) {
        console.log(data)
        return (
          <span class="custom-tree-node" on-mouseover={()=>{data.is_show=true}}  on-mouseout={()=>{data.is_show=false}}>
            <span>{node.label}</span>
            {
              data.is_show ? 
              <span>
              <el-button size="mini" type="text" on-click={() => this.append(data)}>添加</el-button>
              <el-button size="mini" type="text" on-click={() => this.remove(node, data)}>编辑</el-button>
              <el-button size="mini" type="text" on-click={() => this.remove(node, data)}>删除</el-button>
             </span> : null
            }

          </span>);
      },

    }

image

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值