当前位置:首页 > 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)"
>

对应方法:

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
分享给朋友:

相关文章

vue实现分类

vue实现分类

Vue实现分类功能的方法 使用v-for和计算属性 通过计算属性对数据进行分类处理,结合v-for渲染分类后的列表。示例代码: <template> <div>…

vue插槽实现

vue插槽实现

插槽的基本概念 Vue插槽(Slot)是一种内容分发机制,允许父组件向子组件传递模板片段,子组件通过<slot>标签定义接收位置。插槽的核心作用是增强组件的灵活性和复用性。 默认插槽 子…

vue实现画图

vue实现画图

Vue 实现画图功能 在 Vue 中实现画图功能通常需要结合 HTML5 的 <canvas> 元素或第三方库。以下是几种常见的方法: 使用原生 Canvas API 通过 Vue 直接…

vue实现Siri

vue实现Siri

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

vue登录实现

vue登录实现

Vue 登录实现 实现登录功能通常需要前端与后端配合,Vue 作为前端框架,主要负责表单处理、请求发送和状态管理。以下是常见的实现方式: 表单设计与数据绑定 使用 Vue 的 v-model 实现…

vue实现ide

vue实现ide

Vue 实现 IDE 的基本思路 使用 Vue 构建一个简易的集成开发环境(IDE)需要整合代码编辑器、文件管理、终端模拟等功能。以下是关键实现步骤和推荐工具。 核心功能模块 代码编辑器 使用…