获取element中的tree的数据方法如下

有些时候我们需要右键出来一个增删改查的一个弹层,下面这个类似右键效果

<div class="custom-tree-container"> <div class="block"> <p>使用 render-content</p> <el-tree :data="data" show-checkbox node-key="id" default-expand-all :expand-on-click-node="false" :render-content="renderContent"> </el-tree> </div> <div class="block"> <p>使用 scoped slot</p> <el-tree :data="data" show-checkbox node-key="id" default-expand-all :expand-on-click-node="false"> <span class="custom-tree-node" slot-scope="{ node, data }"> <span>{{ node.label }}</span> <span> <el-button type="text" size="mini" @click="() => append(data)"> Append </el-button> <el-button type="text" size="mini" @click="() => remove(node, data)"> Delete </el-button> </span> </span> </el-tree> </div> </div> <script> let id = 1000; export default { data() { const data = [{ id: 1, label: '一级 1', children: [{ id: 4, label: '二级 1-1', children: [{ id: 9, label: '三级 1-1-1' }, { id: 10, label: '三级 1-1-2' }] }] }, { id: 2, label: '一级 2', children: [{ id: 5, label: '二级 2-1' }, { id: 6, label: '二级 2-2' }] }, { id: 3, label: '一级 3', children: [{ id: 7, label: '二级 3-1' }, { id: 8, label: '二级 3-2' }] }]; return { data: JSON.parse(JSON.stringify(data)), data: JSON.parse(JSON.stringify(data)) } }, 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); }, renderContent(h, { node, data, store }) { return ( <span class="custom-tree-node"> <span>{node.label}</span> <span> <el-button size="mini" type="text" on-click={ () => this.append(data) }>Append</el-button> <el-button size="mini" type="text" on-click={ () => this.remove(node, data) }>Delete</el-button> </span> </span>); } } }; </script> <style> .custom-tree-node { flex: 1; display: flex; align-items: center; justify-content: space-between; font-size: 14px; padding-right: 8px; } </style>

上面是element中的,然后自己项目中改版的

 <el-tree :data="dataTree" :props="defaultProps" @node-click="handleNodeClick">

            <span :title="node.label" class="custom-tree-node" slot-scope="{ node, data }">

              <span>{{ node.label }}</span>

              <el-dropdown trigger="click" @command="handleCommand">

                <span class="el-dropdown-link">

                    <i class="el-icon-edit edit"></i>

                </span>

                <el-dropdown-menu slot="dropdown">

                  <el-dropdown-item command="0" v-show="data.type===1">添加区域</el-dropdown-item>

                  <el-dropdown-item command="1" v-show="data.type===1">编辑区域</el-dropdown-item>

                  <el-dropdown-item command="2" v-show="data.type===1">删除区域</el-dropdown-item>

                  <el-dropdown-item command="3" v-show="data.type===1">添加仓库</el-dropdown-item>

                  <el-dropdown-item command="4" v-show="data.type===2">编辑仓库</el-dropdown-item>

                  <el-dropdown-item command="5" v-show="data.type===2">删除仓库</el-dropdown-item>

                </el-dropdown-menu>

              </el-dropdown>

            </span>

          </el-tree>
//css样式

 .custom-tree-node {

          flex: 1;

          display: flex;

          align-items: center;

          justify-content: space-between;

          font-size: 14px;

          width: 150px;

          padding-right: 8px;

        }

        .custom-tree-node span:nth-child(1) {

          width: 80%;

          overflow: hidden;

          text-overflow: ellipsis;

          white-space: nowrap;

        }

        .edit {

          display: none;

        }

        .custom-tree-node:hover .edit {

          display: block;

        }

最终效果图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 Vue Element UI Tree 组件,也可以使用懒加载的方式来查询所有数据。具体实现方法如下: 1. 在 Tree 组件设置 `lazy` 属性为 `true`,表示开启懒加载模式。 2. 在 Tree 组件设置 `load` 属性,用于指定懒加载时需要调用的方法。 3. 在 `load` 方法使用异步请求获取数据,并将数据通过回调函数返回给 Tree 组件。 下面是一个示例代码,演示如何使用懒加载的方式查询 Vue Element UI Tree 组件的所有数据: ```vue <template> <el-tree :data="treeData" :lazy="true" :load="lazyLoad"></el-tree> </template> <script> export default { data() { return { treeData: [], // 懒加载时需要调用的方法 lazyLoad(node, resolve) { // 模拟异步请求数据 setTimeout(() => { // 获取数据 const data = getData(node.id); // 将数据通过回调函数返回给 Tree 组件 resolve(data); }, 1000); } } } } </script> ``` 在这个示例,我们在 Tree 组件设置了 `lazy` 属性为 `true`,表示开启懒加载模式。然后在 `load` 方法,模拟异步请求数据,并将数据通过回调函数 `resolve` 返回给 Tree 组件。最后,我们在 Tree 组件使用 `treeData` 属性来显示查询到的数据。 需要注意的是,在实际使用,需要根据实际情况修改 `getData` 方法获取对应的数据。同时,在 `lazyLoad` 方法,也可以根据需要进行数据处理,以便在 Tree 组件正确显示数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值