模板部分,使用
<el-table>
元素作为表格容器,绑定
data
属性传入表格数据。用
v-for
指令遍历每一项数据,使用普通文本或
<el-input>
组件渲染每个单元格。表格最后一列为操作列,包含 “Add” 和 “Delete” 两个按钮,点击它们可以增加或删除数据行:
<template>
<div>
<el-table :data="tableData">
<el-table-column label="Name" prop="name">
<template #default="{row}">
<el-input v-model="row.name" />
</template>
</el-table-column>
<el-table-column label="Age" prop="age">
<template #default="{row}">
<el-input v-model.number="row.age" type="number" />
</template>
</el-table-column>
<el-table-column label="Actions">
<template #default="{row}">
<el-button @click="addRow(row)">Add</el-button>
<el-button @click="deleteRow(row)">Delete</el-button>
</template>
</el-table-column>
</el-table>
</div>
</template>
逻辑部分,定义
tableData
数据数组,并分别实现
addRow
和
deleteRow
两个方法,以响应用户的添加、删除操作。在
addRow
方法中,向
tableData
数组中添加一个空对象。在
deleteRow
方法中,通过
Array.prototype.findIndex()
找到要删除的行在数组中的索引,并使用
Array.prototype.splice()
方法从数组中删除该行:
在这里,我们仍然使用了
ref
函数将
tableData
声明为响应式数据。然后在
template
中调用
addRow
和
deleteRow
方法,并传入当前操作的行数据作为参数。
希望这能帮到您!
版权归原作者 CPiSUM 所有, 如有侵权,请联系我们删除。