el-table按钮获取当前行元素

文章介绍了在Vue2和Vue3版本的el-table组件中,如何使用插槽功能获取并操作当前行数据,包括编辑、删除等操作的实现方法。
摘要由CSDN通过智能技术生成

el-table按钮获取当前行元素

vue2

		<el-table-column label="操作" width="240px">
          <template slot-scope="scope">
            <el-button size="mini" @click="toItem(scope.row)">用户详情</el-button>
            <el-button size="mini" @click="toUpdate(scope.row)">编辑</el-button>
            <el-button size="mini" type="danger" @click="handleDelete(scope.row)">删除</el-button>
          </template>
        </el-table-column>

el-table-column标签内部使用了 Vue 的插槽功能(slot),具体来说是使用了作用域插槽(scoped slot),通过 slot-scope=“scope” 来声明作用域,然后在插槽内容中可以使用 scope 对象来获取当前行的数据对象。

vue3

<template>
    <div>
        <el-table :data="tableData" style="border-radius: 5px;" :header-cell-style="{ 'text-align': 'center' }"
            :cell-style="{ 'text-align': 'center' }">
            <el-table-column prop="date" label="Date" width="120" />
            <el-table-column prop="name" label="Name" width="120" />
            <el-table-column prop="address" label="Address" />
            <el-table-column label="操作" width="200px">
                <template #default="{ row }">
                    <el-button type="danger" @click="handleDelete(row)">删除</el-button>
                </template>
            </el-table-column>
        </el-table>
    </div>
</template>

<script setup>
import { ref } from 'vue'

const tableData = ref([])

const handleDelete = (row) => {
	console.log(row)
}
</script>

该组件中通过 Vue 的插槽功能和事件处理函数来获取和处理表格中每一行的数据对象。当用户点击编辑或删除按钮时,会触发相应的事件处理函数,并且可以在函数内部获取到相应行的数据对象进行进一步的处理。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要删除 el-table 树形数据中的当前,可以使用以下步骤: 1. 首先,在当前上添加一个删除按钮或其他交互元素。你可以使用 el-table-column 的自定义模板来实现这一点。 2. 在点击删除按钮时,获取当前的数据。你可以使用 $refs 属性引用 el-table 组件,并使用 $refs.table.getCurrentRow() 方法获取当前数据。 3. 在获取当前数据后,你需要使用递归的方式删除当前及其所有子。可以编写一个递归函数,遍历当前的子节点,将其从数据源中删除。 4. 最后,更新 el-table 组件的数据源,以反映删除操作的结果。可以使用 Vue.set() 方法来更新数据源,确保删除操作能够触发响应式更新。 以下是一个示例代码片段,演示如何删除 el-table 树形数据中的当前: ```html <template> <el-table :data="tableData" ref="table" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" @row-remove="handleRowRemove"> <el-table-column label="名称" prop="name"></el-table-column> <el-table-column label="操作"> <template slot-scope="scope"> <el-button v-if="scope.row.hasChildren" type="text" @click="handleRemoveRow(scope.row)">删除</el-button> </template> </el-table-column> </el-table> </template> <script> export default { data() { return { tableData: [ { name: '节点1', children: [ { name: '子节点1', hasChildren: false }, { name: '子节点2', hasChildren: false } ], hasChildren: true }, { name: '节点2', children: [ { name: '子节点3', hasChildren: true, children: [ { name: '子节点4', hasChildren: false } ] } ], hasChildren: true } ] } }, methods: { handleRemoveRow(row) { this.$refs.table.remove(row) }, handleRowRemove(row, rowIndex) { this.recursiveRemove(row) }, recursiveRemove(row) { for (let i = 0; i < row.children.length; i++) { this.recursiveRemove(row.children[i]) } const parent = this.getParentNode(row) const index = parent.children.indexOf(row) parent.children.splice(index, 1) Vue.set(parent, 'children', parent.children) }, getParentNode(row) { const stack = [this.tableData[0]] while (stack.length) { const node = stack.pop() if (node.children && node.children.indexOf(row) !== -1) { return node } if (node.children) { for (let i = 0; i < node.children.length; i++) { stack.push(node.children[i]) } } } return null } } } </script> ``` 在上述示例中,我们使用 el-button 按钮作为删除交互元素,并在 @click 事件中调用 handleRemoveRow 方法。在 handleRemoveRow 方法中,我们使用 this.$refs.table.remove(row) 方法删除当前。在 handleRowRemove 方法中,我们调用 recursiveRemove 方法递归地删除当前及其子。最后,我们使用 Vue.set() 方法更新数据源,以确保删除操作能够触发响应式更新。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋书一叶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值