Ant Design Vue - table实现跨页选择

实现下图跨页选择效果
:rowSelection="{ onSelect: onSelect, onSelectAll: onSelectAll, selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"

Ant Design Vue - table实现跨页选择_第1张图片

 

onSelectChange(selectedRowKeys, selectionRows) {
  console.log('select', this.selectedRowKeys, this.selectedRowKeys)
  this.selectedRowKeys = selectedRowKeys
  // this.selectionRows = selectionRows  //不用onchange操作
},
onSelect(record, selected, selectionRows, nativeEvent) {
  // console.log(record)
  // console.log(selectionRows)
  // console.log(this.selectionRows)
  if (selected) {
    this.selectionRows.push(record)
    // console.log(this.selectionRows)
  }else{
    const delIndex = this.selectionRows.findIndex((val) => {
      return val.id === record.id
    })
    this.selectionRows.splice(delIndex, 1)
  }
},
onSelectAll(selected, selectionRows, changeRows) {
  if (selected) {
    this.selectionRows = this.selectionRows.concat(changeRows)
  }
  if (!selected) {
    let selectionRows = JSON.parse(JSON.stringify(this.selectionRows))
    const delIndex = []
    selectionRows.forEach((item, index) => {
      changeRows.forEach((val, itemIndex) => {
        if (item.id === val.id) {
          delIndex.push(index)
        }
      })
    })
    delIndex.forEach((item) => {
      delete selectionRows[item]
    })
    selectionRows = selectionRows.filter((item) => {
      return item !== undefined
    })
    this.selectionRows = selectionRows
  }
},

你可能感兴趣的:(前端,vue)