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