返回顶部

ant-desin-vue——table全选时自定义的禁用行也被选上,且最后一行不选中问题

效果

错误(序号1是获取数据后,初始化禁用的项):                                                        正确:

                                                                                                     

 

 

 

 

 

原因

未给数据指定key

 

代码

<template>
  <a-table :row-selection="rowSelection" :columns="columns" :data-source="data">
    <a slot="name" slot-scope="text">{{ text }}</a>
  </a-table>
</template>
<script>
const columns = [
  {
    title: 'Name',
    dataIndex: 'name',
    scopedSlots: { customRender: 'name' },
  },
  {
    title: 'Age',
    dataIndex: 'age',
  },
  {
    title: 'Address',
    dataIndex: 'address',
  },
];
const data = [
  {
  id: 1, name:
'John Brown', age: 32, address: 'New York No. 1 Lake Park', }, {
  id: 2, name:
'Jim Green', age: 42, address: 'London No. 1 Lake Park', }, {
  id: 3, name:
'Joe Black', age: 32, address: 'Sidney No. 1 Lake Park', }, {
  id: 4, name:
'Disabled User', age: 99, address: 'Sidney No. 1 Lake Park', }, ]; export default { data() { return { data, columns, selectedRowKeys:[],//选中的key,清空选中时赋值空数组即可
    selectId: [], // 选中的id
}; }, computed: { rowSelection() { return { selectedRowKeys: this.selectedRowKeys, onChange: (selectedRowKeys, selectedRows) => {
        let that = this;
        that.selectedRowKeys = selectedRowKeys;
        let arr = selectedRows.map(k => k.id);
        that.selectId = [...arr];
     }, 
     getCheckboxProps: record
=> ({
       props: {
        disabled: record.name
=== 'Disabled User', // 禁用项
         name: record.name,
       },
     }),
   };
  }, },
 mounted(){
    let that = this;
for (let i in that.data) { that.data[i].key = parseInt(i) + 1; // <== 关键——全选时不选择禁用数据 } } }; </script>

 

posted @ 2020-08-18 15:05  前端-xyq  阅读(2574)  评论(2编辑  收藏  举报