当前位置:首页 > VUE

vue实现增删改功能

2026-02-22 15:35:50VUE

Vue 实现增删改功能

在 Vue 中实现增删改功能通常需要结合数据绑定、事件处理和状态管理。以下是具体实现方法:

数据准备

定义一个数据列表和表单数据对象:

data() {
  return {
    items: [
      { id: 1, name: 'Item 1' },
      { id: 2, name: 'Item 2' }
    ],
    form: {
      id: null,
      name: ''
    },
    isEditing: false
  }
}

新增功能

创建一个方法处理新增操作:

vue实现增删改功能

methods: {
  addItem() {
    if (!this.form.name.trim()) return

    const newItem = {
      id: Date.now(),
      name: this.form.name
    }
    this.items.push(newItem)
    this.resetForm()
  }
}

编辑功能

实现编辑功能需要先填充表单:

editItem(item) {
  this.isEditing = true
  this.form = { ...item }
}

然后更新保存方法:

vue实现增删改功能

updateItem() {
  const index = this.items.findIndex(i => i.id === this.form.id)
  if (index !== -1) {
    this.items.splice(index, 1, { ...this.form })
    this.resetForm()
  }
}

删除功能

删除操作通过数组方法实现:

deleteItem(id) {
  this.items = this.items.filter(item => item.id !== id)
}

表单重置

添加重置表单的方法:

resetForm() {
  this.form = {
    id: null,
    name: ''
  }
  this.isEditing = false
}

模板实现

在模板中绑定这些方法:

<template>
  <div>
    <form @submit.prevent="isEditing ? updateItem() : addItem()">
      <input v-model="form.name" placeholder="Item name">
      <button type="submit">{{ isEditing ? 'Update' : 'Add' }}</button>
      <button v-if="isEditing" @click="resetForm">Cancel</button>
    </form>

    <ul>
      <li v-for="item in items" :key="item.id">
        {{ item.name }}
        <button @click="editItem(item)">Edit</button>
        <button @click="deleteItem(item.id)">Delete</button>
      </li>
    </ul>
  </div>
</template>

完整组件示例

<template>
  <!-- 同上模板内容 -->
</template>

<script>
export default {
  data() {
    return {
      items: [],
      form: {
        id: null,
        name: ''
      },
      isEditing: false
    }
  },
  methods: {
    addItem() {
      if (!this.form.name.trim()) return

      this.items.push({
        id: Date.now(),
        name: this.form.name
      })
      this.resetForm()
    },
    editItem(item) {
      this.isEditing = true
      this.form = { ...item }
    },
    updateItem() {
      const index = this.items.findIndex(i => i.id === this.form.id)
      if (index !== -1) {
        this.items.splice(index, 1, { ...this.form })
        this.resetForm()
      }
    },
    deleteItem(id) {
      this.items = this.items.filter(item => item.id !== id)
    },
    resetForm() {
      this.form = {
        id: null,
        name: ''
      }
      this.isEditing = false
    }
  }
}
</script>

这种实现方式适用于大多数基础CRUD场景,可以根据实际需求进行扩展和优化。

标签: 功能vue
分享给朋友:

相关文章

vue实现一个tab栏

vue实现一个tab栏

Vue 实现 Tab 栏 基础实现(选项式 API) <template> <div class="tab-container"> <div class="t…

vue 实现菜单

vue 实现菜单

Vue 实现菜单的方法 使用 Vue 实现菜单可以通过多种方式,以下是几种常见的方法: 使用 Vue Router 实现动态路由菜单 通过 Vue Router 可以动态生成菜单,根据路由配置自动渲…

antd vue 实现

antd vue 实现

使用 Ant Design Vue 实现功能 Ant Design Vue 是基于 Vue.js 的 UI 组件库,提供了丰富的组件和设计规范。以下是一些常见功能的实现方法。 安装 Ant Desi…

vue实现通知

vue实现通知

Vue 实现通知功能的方法 使用 Vue 实现通知功能可以通过多种方式实现,以下是一些常见的方法: 使用 Vue 的全局事件总线 在 Vue 中可以通过事件总线实现通知功能。创建一个全局事件总线,然…

vue遮罩实现

vue遮罩实现

实现 Vue 遮罩的常见方法 使用 CSS 定位和透明度 创建一个全屏遮罩层,通过 CSS 固定定位覆盖整个视口,并设置半透明背景色。 <template> <div cl…

vue 实现table

vue 实现table

Vue 实现 Table 的方法 使用原生 HTML 表格 通过 Vue 的 v-for 指令动态渲染表格数据,适合简单表格场景。 <template> <table>…