当前位置:首页 > VUE

vue实现单选删除

2026-02-20 13:13:33VUE

实现单选删除功能

在Vue中实现单选删除功能通常涉及以下关键点:数据绑定、事件处理和列表渲染。以下是一个完整的实现方案:

数据准备

定义需要渲染的列表数据和选中的项:

data() {
  return {
    items: [
      { id: 1, name: 'Item 1' },
      { id: 2, name: 'Item 2' },
      { id: 3, name: 'Item 3' }
    ],
    selectedItem: null
  }
}

模板渲染

使用v-for渲染列表,配合v-model或v-on实现选择功能:

<ul>
  <li v-for="item in items" :key="item.id">
    <input 
      type="radio" 
      :id="'item-' + item.id" 
      :value="item" 
      v-model="selectedItem"
    >
    <label :for="'item-' + item.id">{{ item.name }}</label>
  </li>
</ul>
<button @click="deleteItem" :disabled="!selectedItem">删除选中项</button>

删除方法实现

在methods中定义删除逻辑:

methods: {
  deleteItem() {
    if (!this.selectedItem) return

    const index = this.items.findIndex(
      item => item.id === this.selectedItem.id
    )

    if (index !== -1) {
      this.items.splice(index, 1)
      this.selectedItem = null
    }
  }
}

替代方案(不使用v-model)

如果需要更灵活的控制,可以使用事件处理:

<input 
  type="radio" 
  :name="'group-' + item.id" 
  @change="selectItem(item)"
>

对应方法:

vue实现单选删除

selectItem(item) {
  this.selectedItem = item
}

注意事项

  • 确保为每个radio设置相同的name属性以实现单选效果
  • 使用:key时推荐绑定唯一标识符(如id)
  • 删除操作前应确认选中项不为null
  • 考虑添加确认对话框防止误删

完整组件示例

<template>
  <div>
    <ul>
      <li v-for="item in items" :key="item.id">
        <input
          type="radio"
          :id="'item-' + item.id"
          v-model="selectedItem"
          :value="item"
        >
        <label :for="'item-' + item.id">{{ item.name }}</label>
      </li>
    </ul>
    <button @click="deleteItem" :disabled="!selectedItem">
      删除选中项
    </button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: 'Item 1' },
        { id: 2, name: 'Item 2' },
        { id: 3, name: 'Item 3' }
      ],
      selectedItem: null
    }
  },
  methods: {
    deleteItem() {
      if (!this.selectedItem) return

      const index = this.items.findIndex(
        item => item.id === this.selectedItem.id
      )

      if (index !== -1) {
        this.items.splice(index, 1)
        this.selectedItem = null
      }
    }
  }
}
</script>

标签: 单选vue
分享给朋友:

相关文章

vue实现setinterval

vue实现setinterval

在 Vue 中使用 setInterval Vue 中可以通过生命周期钩子和方法结合 setInterval 实现定时任务。以下是一个完整的实现示例: <template> <…

vue实现模糊

vue实现模糊

Vue实现模糊搜索的方法 在Vue中实现模糊搜索功能通常需要结合输入框和列表渲染,通过监听输入内容动态过滤数据。以下是几种常见实现方式: 使用计算属性实现 计算属性适合处理需要响应式更新的搜索逻辑:…

vue源码实现

vue源码实现

Vue 源码实现解析 Vue.js 的核心实现可以分为响应式系统、虚拟 DOM、模板编译、组件化等几个关键部分。以下是对这些核心机制的详细解析。 响应式系统 Vue 的响应式系统基于 Object.…

vue实现vmodel

vue实现vmodel

Vue 实现 v-model Vue 的 v-model 是一个语法糖,用于在表单元素或组件上实现双向数据绑定。以下是其实现方式和原理的详细说明。 在表单元素上使用 v-model v-model…

vue实现tooltips

vue实现tooltips

Vue 实现 Tooltips 的方法 使用原生 HTML title 属性 在 Vue 模板中直接使用 HTML 原生 title 属性实现简单的提示效果。这种方式无需额外依赖,但功能较为基础,无法…

vue  怎么实现双击

vue 怎么实现双击

实现双击事件的方法 在 Vue 中实现双击事件可以通过 @dblclick 指令或自定义逻辑实现。以下是两种常见方法: 使用 @dblclick 指令 Vue 提供了原生 @dblclick…