vue实现可新增、删除、修改、复制、复原及提交的表格

在Vue中实现一个可新增、删除、修改、复原及提交的表格,可以通过v-model绑定数据,使用v-for指令循环渲染表格行,并结合计算属性和方法来管理数据的状态。以下是一个简化的示例:




<template>
  <div>
    <table>
      <thead>
        <tr>
          <th>序号</th>
          <th>名称</th>
          <th>操作</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="(item, index) in items" :key="item.id">
          <td>{{ index + 1 }}</td>
          <td><input v-model="item.name" /></td>
          <td>
            <button @click="removeItem(index)">删除</button>
            <button @click="revertItem(index)">复原</button>
            <button @click="duplicateItem(index)">复制</button>
          </td>
        </tr>
      </tbody>
    </table>
    <button @click="submit">提交</button>
    <button @click="addItem">新增</button>
  </div>
</template>
 
<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: 'Item 1' },
        // ...可以初始化更多项
      ],
      lastCommit: null, // 存储上一次提交的数据,用于恢复
    };
  },
  methods: {
    addItem() {
      const newId = this.items.length + 1;
      this.items.push({ id: newId, name: `Item ${newId}` });
    },
    removeItem(index) {
      this.lastCommit = JSON.parse(JSON.stringify(this.items)); // 复制当前状态
      this.items.splice(index, 1);
    },
    revertItem(index) {
      if (this.lastCommit) {
        this.items = JSON.parse(JSON.stringify(this.lastCommit));
      }
    },
    duplicateItem(index) {
      const duplicateItem = JSON.parse(JSON.stringify(this.items[index]));
      this.items.push(duplicateItem);
    },
    submit() {
      this.lastCommit = JSON.parse(JSON.stringify(this.items)); // 提交后复制当前状态
      // 处理提交逻辑...
    },
  },
};
</script>

在这个示例中,我们使用了一个items数组来存储表格数据。通过addItem方法可以添加新项,removeItem方法会删除指定项并将当前状态存储到lastCommit以便复原,duplicateItem方法会复制指定项,submit方法会将当前状态存储到lastCommit并执行提交操作。如果需要恢复到之前提交的状态,可以调用revertItem方法。

VUE
最后修改于:2024年08月12日 14:19

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日