elementui表格组件复选框实现单选功能

本文介绍了如何在Vue应用中使用ElementUI的el-table组件实现表格的多选和单选功能,并展示了父子组件之间的数据交互和事件处理。
摘要由CSDN通过智能技术生成
	// 子组件
	<template>
    <div>
        
        <el-table
            :data="data"
            ref="refsTable"
            highlight-selection-row
            @select="selectChange"
            @selection-change="handleSelectionChange"
            v-on="$listeners"
            style="width: 100%">
            <el-table-column
                type="selection"
                width="55">
            </el-table-column>
            <el-table-column
                prop="date"
                label="日期"
                width="180">
            </el-table-column>
            <el-table-column
                prop="name"
                label="姓名"
                width="180">
            </el-table-column>
            <el-table-column
                prop="address"
                label="地址">
            </el-table-column>
        </el-table>
    </div>
</template>

<script>
    export default {
        name:'Ztable',
        props: {
            data: {
                type: Array,
                default: ()=>[]
            },
            multiple:{ // 传入false表示这个单选
                type:Boolean,
                default:true
            }
            
        },
        data() {
            return {
                ishandler:false,
            }
        },
        methods: {
            selectChange(list,val){
                if(!this.multiple){
                    this.ishandler = true
                    let currentJSON = JSON.stringify(val)
                    let find = list.find(item=>{
                        let itemJSON = JSON.stringify(item)
                        return itemJSON === currentJSON
                    })
                    if(find){
                        this.$refs.refsTable.clearSelection();
                        this.$refs.refsTable.toggleRowSelection(find);
                    }
                    this.$emit('radioChange',find)
                }

            },
            handleSelectionChange(selection) {
                if(!this.multiple){
                	// 数据更新的时候去除掉勾选的数据
                    if(selection.length === 0 && !this.ishandler){
                        this.$emit('radioChange',undefined)
                    }
                    this.ishandler = false
                }
            },

        },
    }
</script>

<style scoped>
/**找到表头那一行,然后把里面的复选框隐藏掉**/
::v-deep .el-table__header-wrapper .el-table__header .el-checkbox {
 	 display: none;
}
</style>

// 父组件
<template>
  <div id="app">
 
    <el-button @click="setTableData">重新设置表格数据</el-button>
    <zTable :data="tableData" :multiple="false" @radioChange="handleSelectionChange" />
  </div>
</template>

<script>

import zTable from './components/Ztable.vue'
export default {
  name: 'App',
  data(){
    return {
        tableData:[],
        currentVal:undefined
    }
  },
  components: {
    zTable
  },
  
  mounted () {
    this.setTableData()
  },
  methods:{
    handleSelectionChange(selection) {
        console.log('选择的值',selection)
    },
    setTableData(){
      this.tableData = [{
          date: '2016-05-02',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
      }, {
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1517 弄'
      }, {
          date: '2016-05-01',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1519 弄'
      }, {
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
      }]
    },
    
  }
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 layui 静态表格中,可以通过监听复选框的选中事件,来实现单选功能。具体实现步骤如下: 1. 在页面中定义数据表格,并设置其复选框列的 lay-skin 属性为 primary,表示使用原始风格的复选框。同时,设置表格的 lay-filter 属性为 demo,用于后续的事件监听。 ```html <table class="layui-table" lay-filter="demo"> <thead> <tr> <th><input type="checkbox" name="" lay-skin="primary" lay-filter="allChoose"></th> <th>ID</th> <th>姓名</th> <th>性别</th> <th>城市</th> </tr> </thead> <tbody> <tr> <td><input type="checkbox" name="" lay-skin="primary"></td> <td>1</td> <td>小明</td> <td>男</td> <td>北京</td> </tr> <tr> <td><input type="checkbox" name="" lay-skin="primary"></td> <td>2</td> <td>小红</td> <td>女</td> <td>上海</td> </tr> <!-- ... --> </tbody> </table> ``` 2. 在 JavaScript 代码中,监听表格复选框选中事件,并在事件处理函数中,根据选中状态来判断是否需要取消其他行的选中状态。 ```javascript layui.use(['table', 'jquery'], function(){ var table = layui.table; var $ = layui.jquery; // 监听表格复选框选择 table.on('checkbox(demo)', function(obj){ var checkStatus = table.checkStatus('demo'); var data = checkStatus.data; var isChecked = obj.checked; var rowIndex = obj.data.LAY_TABLE_INDEX; if (isChecked) { // 如果选中,则取消其他行的选中状态 for (var i = 0; i < data.length; i++) { if (data[i].LAY_TABLE_INDEX != rowIndex) { table.checkStatus('demo').data[i].LAY_CHECKED = false; } } } }); }); ``` 在上述代码中,我们使用 layui 的 table 模块监听表格复选框选中事件,并在事件处理函数中,根据选中状态来判断是否需要取消其他行的选中状态。这样,就可以实现静态表格复选框单选功能了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值