前言:很多时候我们需要用Element-UI中的表格表单来展示我们的数据,而很多时候我们需要对这些数据做增删改查啥的,所以需要获取每一行的数据,当前行的数据,然后才能对当前行的数据进行操作。
方法一
Vue中有一个叫插槽的东西,可以在button按钮外层 使用template
标签包裹 然后使用slot-scope="scope"
,或者#default=scope
进行设置 在需要获取数据的地方使用scope.row
得到需要操作行的所有字段信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <el-table :data="tableData" :border="true" > <el-table-column prop="id" label="角色ID"/> <el-table-column prop="name" label="角色名称" /> <el-table-column prop="description" label="角色描述" /> <el-table-column prop="flag" label="唯一标识" /> <el-table-column label="操作" width="250"> <template #default="scope"> <el-button size="small" @click="getRoleMenuInfo(scope.row.id)" type="info" :icon="Menu" plain>菜单管理</el-button> <el-button size="small" @click="" type="warning" plain>编辑</el-button> <el-button size="small" type="danger" @click="">删除</el-button> </template> </el-table-column> </el-table>
|
方法二
Element Table控件里面提供了一个@current-change方法,这个方法的意思是,你鼠标经过的行数变了,就会触发这个函数,也就是当前行改变了就会自动调用这个函数。
这个函数有两个参数,第一个是currentRow是指当前行,oldCurrentRow指变化前的那行
注意:这个函数对上面的那种情况不太适用。
可以先声明一个响应式对象用来保存当前行的数据
1 2
| const currentRow = ref({})
|
然后定义一个函数,当前行发生变化的时候自动触发
1 2 3
| function TableCurrentChange(val : any){ currentRow.value = val }
|
1 2 3 4 5 6
| <el-table :data="tableData" @current-change="TableCurrentChange" ref="singleTableRef" style="width: 98%;margin-left: 10px;height: 67vh;"> <el-table-column prop="id" label="ID" width="100" /> <el-table-column prop="username" label="用户名" width="120" /> <el-table-column prop="nickname" label="昵称" width="120" /> </el-table>
|