当前位置:首页 > VUE

vue实现列表单选

2026-02-21 05:26:54VUE

实现列表单选的基本思路

在Vue中实现列表单选功能,可以通过v-model绑定选中项,结合v-for渲染列表项。核心是维护一个响应式变量存储当前选中的值,并通过点击事件更新该变量。

基础实现代码示例

<template>
  <div>
    <div 
      v-for="item in list" 
      :key="item.id"
      @click="selected = item.id"
      :class="{ 'active': selected === item.id }"
    >
      {{ item.text }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      list: [
        { id: 1, text: '选项1' },
        { id: 2, text: '选项2' },
        { id: 3, text: '选项3' }
      ],
      selected: null
    }
  }
}
</script>

<style>
.active {
  background-color: #eee;
}
</style>

使用单选框(input radio)的实现方式

<template>
  <div>
    <label v-for="item in list" :key="item.id">
      <input 
        type="radio" 
        :value="item.id" 
        v-model="selected"
      >
      {{ item.text }}
    </label>
  </div>
</template>

对象类型选项的处理

当选项是对象而非简单值时,可以使用v-model绑定整个对象:

vue实现列表单选

<template>
  <div>
    <div 
      v-for="item in list" 
      :key="item.id"
      @click="selectedItem = item"
      :class="{ 'active': selectedItem?.id === item.id }"
    >
      {{ item.text }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selectedItem: null,
      list: [
        { id: 1, text: '选项1' },
        { id: 2, text: '选项2' },
        { id: 3, text: '选项3' }
      ]
    }
  }
}
</script>

使用计算属性优化

可以通过计算属性判断当前是否选中,使模板更简洁:

vue实现列表单选

<template>
  <div>
    <div 
      v-for="item in list" 
      :key="item.id"
      @click="selected = item.id"
      :class="{ 'active': isSelected(item.id) }"
    >
      {{ item.text }}
    </div>
  </div>
</template>

<script>
export default {
  computed: {
    isSelected() {
      return (id) => this.selected === id
    }
  }
}
</script>

组件化实现

对于复用场景,可以封装为单选列表组件:

<!-- RadioList.vue -->
<template>
  <div>
    <div 
      v-for="item in items" 
      :key="item[valueKey]"
      @click="$emit('update:modelValue', item[valueKey])"
      :class="{ 'active': modelValue === item[valueKey] }"
    >
      {{ item[textKey] }}
    </div>
  </div>
</template>

<script>
export default {
  props: {
    items: Array,
    modelValue: [String, Number],
    valueKey: {
      type: String,
      default: 'id'
    },
    textKey: {
      type: String,
      default: 'text'
    }
  },
  emits: ['update:modelValue']
}
</script>

使用方式:

<radio-list 
  v-model="selectedId"
  :items="list"
/>

标签: 单选列表
分享给朋友:

相关文章

vue列表查询实现

vue列表查询实现

实现 Vue 列表查询功能 基础列表渲染 在 Vue 中可以通过 v-for 指令实现列表渲染,结合计算属性动态过滤数据: <template> <div> &l…

vue实现 单选

vue实现 单选

实现 Vue 单选功能 在 Vue 中实现单选功能可以通过多种方式完成,常见的有使用原生 HTML 的 <input type="radio"> 结合 Vue 的数据绑定,或使用第三方 U…

vue实现图片单选

vue实现图片单选

Vue 实现图片单选功能 在 Vue 中实现图片单选功能可以通过多种方式完成,以下是两种常见的实现方法: 方法一:使用 v-model 和单选按钮 通过将单选按钮与图片绑定,利用 v-model…

jquery列表

jquery列表

jQuery 列表操作 jQuery 提供了多种方法来操作 HTML 列表(如 <ul> 或 <ol>),包括动态添加、删除、修改列表项,以及事件绑定等。 创建列表 使用 j…

vue实现列表权限

vue实现列表权限

实现列表权限控制的方法 在Vue中实现列表权限控制通常涉及前端逻辑与后端数据的配合。以下是几种常见方法: 基于角色或权限码的渲染控制 通过v-if或v-show指令根据用户权限动态渲染列表项:…

vue表格实现单选

vue表格实现单选

实现 Vue 表格单选功能 使用 v-model 绑定选中状态 在表格的每一行添加单选按钮或点击行触发选中,通过 v-model 绑定一个变量存储当前选中行的唯一标识(如 id)。 示例代码:…