在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
方法来添加一行空数据。
以上是一个简单的示例,你可以根据自己的需求进行扩展和修改。