当前位置:首页 > VUE

vue前端table实现单选

2026-01-22 14:02:20VUE

实现单选表格的基本思路

在Vue中实现表格的单选功能,可以通过绑定数据模型和事件处理来完成。核心是维护一个选中项的数据状态,并通过点击事件更新该状态。

基础实现方法

模板部分

<template>
  <table>
    <thead>
      <tr>
        <th>选择</th>
        <th>姓名</th>
        <th>年龄</th>
      </tr>
    </thead>
    <tbody>
      <tr 
        v-for="(item, index) in tableData" 
        :key="index"
        @click="selectRow(item)"
        :class="{ 'selected': selectedItem === item }"
      >
        <td>
          <input 
            type="radio" 
            :checked="selectedItem === item"
            @click.stop
          >
        </td>
        <td>{{ item.name }}</td>
        <td>{{ item.age }}</td>
      </tr>
    </tbody>
  </table>
</template>

脚本部分

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '张三', age: 25 },
        { name: '李四', age: 30 },
        { name: '王五', age: 28 }
      ],
      selectedItem: null
    }
  },
  methods: {
    selectRow(item) {
      this.selectedItem = item
    }
  }
}
</script>

使用计算属性优化

可以添加计算属性来判断是否选中,使逻辑更清晰:

computed: {
  isSelected() {
    return (item) => this.selectedItem === item
  }
}

模板中使用:

:class="{ 'selected': isSelected(item) }"
:checked="isSelected(item)"

使用第三方组件库的实现

如果使用Element UI等组件库,实现更简单:

<el-table
  :data="tableData"
  @current-change="handleCurrentChange"
  highlight-current-row
>
  <el-table-column prop="name" label="姓名"></el-table-column>
  <el-table-column prop="age" label="年龄"></el-table-column>
</el-table>
methods: {
  handleCurrentChange(val) {
    this.selectedItem = val
  }
}

样式优化建议

添加选中样式提升用户体验:

tr.selected {
  background-color: #f0f7ff;
}

tr:hover {
  cursor: pointer;
  background-color: #f5f5f5;
}

注意事项

  1. 使用@click.stop阻止radio的事件冒泡,避免触发两次选择
  2. 高亮行样式需要与radio选中状态同步
  3. 在大数据量情况下考虑性能优化,避免不必要的渲染
  4. 移动端适配可能需要调整点击区域

以上方法可以根据具体项目需求进行调整和扩展,比如添加取消选择功能或与表单其他字段联动等。

vue前端table实现单选

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

相关文章

vue实现单页面

vue实现单页面

Vue 实现单页面应用(SPA) Vue.js 是一个渐进式框架,非常适合构建单页面应用(SPA)。SPA 的核心特点是整个应用只有一个 HTML 页面,通过动态加载内容实现页面切换,无需重新加载整个…

vue前端实现登录

vue前端实现登录

实现登录功能的基本流程 使用Vue实现登录功能需要结合前端框架和后端API交互。以下是一个典型的实现方案: 安装必要依赖 确保项目已安装axios用于HTTP请求: npm install a…

vue播放倍速怎么实现

vue播放倍速怎么实现

实现Vue播放倍速的方法 在Vue中实现播放倍速功能通常涉及HTML5的<video>元素或第三方播放器库。以下是几种常见实现方式: 使用原生HTML5 video元素 通过ref获取v…

vue实现无线滚动列表

vue实现无线滚动列表

无限滚动列表的实现方法 在Vue中实现无限滚动列表通常结合监听滚动事件和动态加载数据。以下是几种常见方法: 使用自定义指令 创建自定义指令v-infinite-scroll监听滚动事件:…

vue实现列表显示

vue实现列表显示

Vue 实现列表显示的方法 在 Vue 中实现列表显示通常使用 v-for 指令,结合数组或对象数据渲染动态列表。以下是几种常见的实现方式。 基本列表渲染 通过 v-for 指令遍历数组,动态生成列…

vue实现下拉层级

vue实现下拉层级

Vue实现下拉层级菜单 使用Vue实现下拉层级菜单可以通过递归组件或动态渲染的方式完成。以下是两种常见实现方法: 递归组件实现 创建一个递归组件处理多级菜单结构: <template…