1. 程式人生 > >element-ui Table表格結合CheckBox實現單選效果

element-ui Table表格結合CheckBox實現單選效果

最近做專案遇到一個需求,需要實現一個表格的單選,由於專案使用的是element-ui.於是去看了表格的文件,確實有單選的方法,但是官方的單選是直接選中表格行,通過顏色來區分 看著效果不明顯,實際需要一個複選框可以選擇,效果圖如下   於是自己結合element的多選框方法,做了一個簡易的單選功能,程式碼如下 html程式碼:
<template>
    <div>
      <p>shopInfo</p>
      <el-table
        ref="multipleTable"
        :data="tableData3"
        tooltip-effect="dark"
        highlight-current-row // element-UI提供的單選方法,可以使當前選中行高亮
style
="width: 100%" @current-change="handleSelectionChange"> // 單選方法,返回選中的表格行 <el-table-column label="操作" width="55"> <template slot-scope="scope"> <el-checkbox v-model="scope.row.checked"></el-checkbox> // 新增一個多選框,控制選中與否
</template> </el-table-column> <el-table-column label="日期" width="120"> <template slot-scope="scope">{{ scope.row.date }}</template> </el-table-column> <el-table-column prop="name" label
="姓名" width="120"> </el-table-column> <el-table-column prop="address" label="地址" show-overflow-tooltip> </el-table-column> </el-table> </div> </template>

js程式碼:

export default {
    name: 'shopInfo',

    data () {
      return {
        tableData3: []
      }
    },

    created () {
      this.setTable()
    },

    methods: {
      setTable () {
        let resdata = [{
          id: 44,
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀區金沙江路 1518 弄'
        }, {
          id: 89,
          date: '2016-05-02',
          name: '王小虎',
          address: '上海市普陀區金沙江路 1518 弄'
        }, {
          id: 23,
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀區金沙江路 1518 弄'
        }, {
          id: 88,
          date: '2016-05-07',
          name: '王小虎',
          address: '上海市普陀區金沙江路 1518 弄'
        }]
        // 後臺資料返回後,手動新增一個checked屬性控制選中與否
        resdata.forEach(item => {
          item.checked = false
        })
        this.tableData3 = resdata
      },

      handleSelectionChange (row) {
        this.tableData3.forEach(item => {
          // 排他,每次選擇時把其他選項都清除
          if (item.id !== row.id) {
            item.checked = false
          }
        })
        console.log(row)
      }
    }
  }