在Vue 3中,可以通过使用v-for指令来遍历数组,并在表格中显示数据。要实现表格的编辑和删除功能,可以使用动态绑定的方式来实现。
以下是一个示例代码,实现了一个简单的表格编辑和删除功能:
<template>
<div>
<table>
<thead>
<tr>
<th>姓名</th>
<th>年龄</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in data" :key="index">
<td>
<input type="text" v-model="item.name" :disabled="!item.editable" />
</td>
<td>
<input type="number" v-model="item.age" :disabled="!item.editable" />
</td>
<td>
<button @click="editItem(index)" v-if="!item.editable">编辑</button>
<button @click="saveItem(index)" v-else>保存</button>
<button @click="deleteItem(index)">删除</button>
</td>
</tr>
</tbody>
</table>
<button @click="addItem">新增</button>
</div>
</template>
<script>
import { reactive } from 'vue';
export default {
setup() {
// 使用reactive函数创建响应式的数据
const data = reactive([
{ name: '张三', age: 20, editable: false },
{ name: '李四', age: 25, editable: false },
{ name: '王五', age: 30, editable: false },
]);
// 编辑条目
const editItem = (index) => {
data[index].editable = true;
};
// 保存条目
const saveItem = (index) => {
data[index].editable = false;
};
// 删除条目
const deleteItem = (index) => {
data.splice(index, 1);
};
// 新增条目
const addItem = () => {
data.push({ name: '', age: 0, editable: true });
};
return {
data,
editItem,
saveItem,
deleteItem,
addItem,
};
},
};
</script>
在上面的代码中,我们首先通过reactive
函数将数组data
变为响应式数据。然后在表格中使用v-for
指令遍历数组,并在每个单元格中使用v-model
指令来进行双向绑定,实现数据的回显和编辑功能。
在每一行的操作列中,我们使用v-if
和v-else
指令来根据editable
属性的值显示不同的按钮。当editable
为false
时,显示"编辑"按钮,点击后将editable
值设为true
,进入编辑状态。当editable
为true
时,显示"保存"按钮,点击后将editable
值设为false
,保存修改。另外还有一个"删除"按钮,点击后调用deleteItem
方法来删除当前行的数据。
我们还提供了一个"新增"按钮,点击后调用addItem
方法来添加一行空数据。
以上是一个简单的示例,你可以根据自己的需求进行扩展和修改。