当前位置:首页 > VUE

vue实现单选删除

2026-02-20 13:13:33VUE

实现单选删除功能

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

数据准备

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

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中定义删除逻辑:

vue实现单选删除

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

相关文章

django vue实现

django vue实现

Django与Vue.js整合实现方案 Django作为后端框架与Vue.js作为前端框架的整合,可以通过以下方式实现: 分离式开发 前后端完全分离,Django仅提供API接口,Vue.js通过a…

vue实现复选

vue实现复选

Vue 实现复选框 在 Vue 中实现复选框可以通过 v-model 指令绑定数据,同时结合 input 元素的 type="checkbox" 属性来实现。以下是几种常见的实现方式: 单个复选框…

vue实现购票

vue实现购票

Vue 实现购票功能 数据结构设计 购票功能通常需要以下数据结构: 场次信息(时间、地点、价格) 座位信息(可选座位、已售座位) 用户订单信息 示例数据结构: data() { return…

vue实现开关

vue实现开关

Vue 实现开关组件的方法 使用原生HTML和Vue数据绑定 通过v-model绑定复选框的checked状态,结合CSS样式实现开关效果: <template> <label…

vue 实现分屏

vue 实现分屏

Vue 实现分屏的方法 使用 CSS Flexbox 或 Grid 布局 通过 CSS Flexbox 或 Grid 布局可以轻松实现分屏效果。在 Vue 组件中定义两个或多个区域,并使用 CSS 控…

vue实现 treegrid

vue实现 treegrid

Vue 实现 TreeGrid 的方法 使用现成组件库 Element UI、Ant Design Vue 等流行组件库提供了现成的 TreeTable/TreeGrid 组件,可直接使用。 Ele…