效果:不只是带单选框,点击当前行单选框选中状态
网上查了一些发现很多都是只能点击当前radio选中当前行,配合element-ui的单选table时发现两个的选择状态是不一致的,所以调整了一下
效果

提供下思路:

1.保证不止是点击单选框,点击列表某行也能够选中,通过设置highlight-current-row和@current-change="handleCurrentChange"实现

2.radio为单选框的值,选中后为当前行数,翻页后为保证重新选中状态需要重制

3.我的项目里需求是组件化形式,单选框选中值传递给父组件,父组件可能会有默认数据传入,需要在打开时设置点选状态

部门关键代码

<template>
  <el-table
    :data="tableData"
    ref="orderTable"
    @current-change="handleCurrentChange"
    tooltip-effect="light"
    highlight-current-row
    :cell-style="cellStyle"
   > <!-- &nbsp; 为空,不加这个radio的label会显示index数字,注意从0开始的;radio会全选的问题是label相同导致的
disabled设置单选框是否可以被选择
-->
    <el-table-column label="选择" width="50" center>
      <template slot-scope="scope">
        <el-radio
          class="radio"
          v-model="radio"
          :label="scope.$index"
          @change.native="getCurrentRow(scope.$index)"
          :disabled="scope.row.Enable==1?false:true">
        &nbsp;</el-radio>
      </template>
    </el-table-column>
  </el-table>
    <el-pagination
    background
    layout="total, prev, pager, next"
    :current-page.sync="pagination.pageNum"
    :page-size="pagination.pageSize"
    :total="pagination.total"
    @current-change="changePage"
    :pager-count="5"
   ></el-pagination> </template>
<script>
export default {
  data() {
    return {
      currentRow: null,
      radio: false,
      tableData: [],   },
  porps:{
    //父组件传递过来的初始选中值,根据自己项目需求设置
    chooseData:{
      type:Object
    }
  },
  watch:{
    //观察是否有父组件传递的初始值或者变化,重新选中
    chooseData(val){
      if(val){
        this.radio = false
        this.getInitChoose()
      }
    }
  },
  methods:{    
      getList() {
        this.isListLoading = true;
          getTableData().then(res => {             this.tableData = res.item;
             //每次数据改变重新判断单选状态
            this.getInitChoose();           })
      },
      //设置单选框选择状态
      getInitChoose() {
        if (this.chooseData) {
          let index = this.tableData.findIndex(
          item => item.userUuid == this.chooseData.id
        );
        if (index > -1) {
          this.radio = index;
        }
      },
      //由于翻页后重新获取列表了,需要把选择框选中状态取消
      changePage(pageNum) {
        this.pagination.pageNum = pageNum;
        this.radio = false
        this.getList()
      }, /* current-change 当表格的当前行发生变化的时候会触发该事件,如果要高亮当前行,请打开表格的 highlight-current-row 属性 currentRow, oldCurrentRow */
//保证点击当前行的任意位置不止是单选框也能够选择       handleCurrentChange(val) {
        if (val && val.Enable == 1) {
          this.currentRow = val;
          let index = this.tableData.findIndex(
          item => item.userUuid == this.currentRow.userUuid
        )
        if (index > -1) {
          this.radio = index;
        }         this.$emit('data',val.pkg)       },
      getCurrentRow(index) {
        this.radio = index   
      },    }
} </script>

element-ui 带单选框的表格的更多相关文章

  1. element ui table单选框点击全选问题

    <template slot-scope="scope"> <el-radio-group v-model="scope.row.HandleState ...

  2. vue + element ui 实现实现动态渲染表格

    前言:之前需要做一个页面,能够通过表名动态渲染出不同的表格,这里记录一下.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9786326.html 网站地址:我的 ...

  3. element ui中循环出来的表格勾选问题

    需求是这样的,一个房主屋里面有多个电表,每一个表是一个账户,一次只能给一个账户缴费,在点击go按钮进行缴费,这个时候判断是否跨表勾选,跨表格勾选则弹窗提示,反之符合需求,走缴费逻辑 上代码 <! ...

  4. element ui下拉框如何实现默认选择?

    <template> <el-select v-model="value4" clearable placeholder="请选择"> ...

  5. element ui 下拉框绑定对象并且change传多个参数

    废话不说直接上代码说明真相. <template> <div class="hello"> <span>可以设置的属性 value-key=&q ...

  6. element ui,input框输入时enter健进行搜索

    <el-form-item label="企业名称"> <el-input v-model="formSearch.kw" @keyup.en ...

  7. element ui form表单清空规则

    公司项目重构,经过商定使用element ui.在重构项目的时候发现一下element ui上很蛋疼的东西. 例如,这个form表单就是一个.趁着在高铁上没事,把想写的东西写一下. 先说一下eleme ...

  8. vue2.0 + element ui 实现表格穿梭框

    element ui 官网里介绍了穿梭框(Transfer),但在实际使用过程中,会出现一些问题: 1.穿梭框里能放置的内容太少,不能满足复杂的业务需求. 2.当选项过多时,穿梭框很难实现分页,左右两 ...

  9. 封装一个优雅的element ui表格组件

    现在做后台系统用vue + elementUI 的越来越多,那element ui的 el-table 组件肯定也离不开.虽然element ui的table组件很好.但是表格和分页是分离的.每次写表 ...

随机推荐

  1. pyhanlp 中文词性标注与分词简介

    pyhanlp 中文词性标注与分词简介 pyhanlp实现的分词器有很多,同时pyhanlp获取hanlp中分词器也有两种方式 第一种是直接从封装好的hanlp类中获取,这种获取方式一共可以获取五种分 ...

  2. Spark任务提交jar包依赖解决方案

    转载自:http://blog.csdn.net/wzq294328238/article/details/48054525                    通常我们将Spark任务编写后打包成 ...

  3. elasticsearch UNASSIGNED 处理

    PUT /_settings HTTP/1.1 Host: 192.168.1.12:9200 Cache-Control: no-cache Postman-Token: 1befb0fb-6492 ...

  4. JAVA高并发系列

    高并发Java(1):前言 高并发Java(2):多线程基础 高并发Java(3):Java内存模型和线程安全 高并发Java(4):无锁 高并发Java(5):JDK并发包1 高并发Java(6): ...

  5. 【python】try...except...后中断程序继续运行

  6. 【转】使用kettle工具遇到的问题汇总及解决方案

    使用kettle工具遇到的问题汇总及解决方案   转载文章版权声明:本文转载,原作者薄海 ,原文网址链接 http://blog.csdn.net/bohai0409/article/details/ ...

  7. 【巷子】---middleware---redux-promise-middleware---【react】

    一.Middleware的由来 单一的state是存储在store中,当要对state进行更新的时候,首先要发起一个action(通过dispatch函数),action的作用就是相当于一个消息通知, ...

  8. T-SQL目录汇总1

    DDL alter create drop DML select       update delete insert DCL  grant revoke deny ================= ...

  9. 黄聪:微信小程序(应用号)资源汇总整理(转)

    微信小应用资源汇总整理 开源项目 WeApp - 微信小程序版的微信 wechat-weapp-redux-todos - 微信小程序集成Redux实现的Todo list wechat-weapp- ...

  10. adb调试android设备 说的比较清楚的一篇文章

    ADB支持两种连接Android系统的方式,USB方式及网络方式.一般手机及平板默认会设置为USB方式.android系统底层运行着一个服务(adbd),用于相应和管理大家在电脑端的adb命令连接,这 ...