当前位置:首页 > VUE

vue实现增加修改

2026-02-20 04:49:17VUE

Vue 实现增加和修改功能

数据绑定与表单处理

使用 v-model 实现表单数据的双向绑定,适用于新增和修改场景。例如表单输入框绑定到 formData 对象:

<template>
  <input v-model="formData.name" placeholder="请输入名称">
  <input v-model="formData.age" type="number" placeholder="请输入年龄">
</template>

<script>
export default {
  data() {
    return {
      formData: { name: '', age: null }
    }
  }
}
</script>

新增数据逻辑

通过方法将表单数据添加到列表,并重置表单:

methods: {
  addItem() {
    this.items.push({ ...this.formData });
    this.resetForm();
  },
  resetForm() {
    this.formData = { name: '', age: null };
  }
}

修改数据逻辑

设置编辑状态和当前编辑项索引,填充表单数据:

editItem(index) {
  this.editingIndex = index;
  this.formData = { ...this.items[index] };
},
updateItem() {
  this.items.splice(this.editingIndex, 1, { ...this.formData });
  this.cancelEdit();
}

状态管理

使用 editingIndex 区分新增和编辑模式:

data() {
  return {
    editingIndex: -1,
    items: []
  }
}

动态按钮与条件渲染

根据编辑状态显示不同操作按钮:

vue实现增加修改

<button @click="editingIndex === -1 ? addItem() : updateItem()">
  {{ editingIndex === -1 ? '添加' : '更新' }}
</button>
<button v-if="editingIndex !== -1" @click="cancelEdit">取消</button>

完整组件示例

<template>
  <div>
    <input v-model="formData.name">
    <input v-model="formData.age" type="number">

    <button @click="handleSubmit">
      {{ editingIndex === -1 ? '添加' : '更新' }}
    </button>

    <ul>
      <li v-for="(item, index) in items" :key="index">
        {{ item.name }} - {{ item.age }}
        <button @click="editItem(index)">编辑</button>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      formData: { name: '', age: null },
      items: [],
      editingIndex: -1
    }
  },
  methods: {
    handleSubmit() {
      if (this.editingIndex === -1) {
        this.items.push({ ...this.formData });
      } else {
        this.items.splice(this.editingIndex, 1, { ...this.formData });
      }
      this.resetForm();
    },
    editItem(index) {
      this.formData = { ...this.items[index] };
      this.editingIndex = index;
    },
    resetForm() {
      this.formData = { name: '', age: null };
      this.editingIndex = -1;
    }
  }
}
</script>

标签: vue
分享给朋友:

相关文章

vue实现骰子

vue实现骰子

Vue 实现骰子功能 创建 Vue 组件 在 Vue 项目中创建一个骰子组件,例如 Dice.vue。该组件包含骰子的外观和逻辑。 <template> <div class=…

vue翻页实现

vue翻页实现

Vue翻页实现方法 基础分页组件实现 使用v-for和计算属性实现基础分页逻辑: <template> <div> <ul> <li…

vue实现Siri

vue实现Siri

Vue 实现 Siri 风格语音交互 实现类似 Siri 的语音交互功能需要结合语音识别、语音合成和前端交互逻辑。Vue 作为前端框架,可以很好地管理这些功能的交互状态。 语音识别集成 使用 Web…

vue实现日历

vue实现日历

Vue 实现日历的基本方法 使用 Vue 实现日历可以通过自定义组件或借助第三方库完成。以下是两种常见实现方式: 自定义日历组件 创建基于 Vue 的日历组件需要处理日期计算和渲染逻辑。核心是生成当…

vue实现列表

vue实现列表

Vue 实现列表的方法 在 Vue 中实现列表渲染通常使用 v-for 指令,可以动态生成多个元素。以下是几种常见的实现方式: 基础列表渲染 使用 v-for 遍历数组,生成列表项。v-for 需要…

vue怎么实现onclick

vue怎么实现onclick

在Vue中实现点击事件(类似原生onclick)可以通过多种方式完成,以下是常见方法: 使用 v-on 指令 Vue提供了v-on指令绑定DOM事件,简写为@。例如绑定点击事件: <butt…