Ant design vue中的联动选择取消

在这里插入图片描述
项目中会遇到需求就是table表格中选中在侧边展示,侧边删除,table中选中取消的联动选中
ui框架:Ant design vue
组件:table 和 tag
html中

 <template v-for="tag in dataType">
    <!-- key不能使用index -->
    <a-tag :key="tag.id" closable :afterClose="() => deleteDataType(tag.id)">{{tag.title}}</a-tag>
</template>
<a-table 
 :rowSelection="rowSelection()" 
 :columns="columns" 
 :dataSource="filterTypeData" 
 :pagination="paginationProps" :scroll='{y:455}' >
    <template slot="dataName" slot-scope="dataName">
      <div v-for="(list,index) in dataName" :key='index'>{{list.name}}</div>
    </template>
    <template slot="description" slot-scope="description">
       <div v-for="(list,index) in description" :key='index'>{{list.content}}</div>
       </template>
</a-table>

js代码
在table中如果想要某个单元格里面是呈现两行或者两行以上,那么就添加template 让slot=命名,将数据循环遍历就可以呈现了

data:{
return{
	const columns = [
	  {
	    title: '数据类型',
	    dataIndex: 'dataTypeName',
	    width: '15%'
	  },
	  {
	    title: '数据名称',
	    dataIndex: 'dataName',
	    width: '15%',
	    scopedSlots: { customRender: 'dataName' }
	  },
	  {
	    title: '数据描述',
	    dataIndex: 'description',
	    scopedSlots: { customRender: 'description' }
	  }
	],
	rowKeys:[],
	dataType:[],
	changeDataType:[],
	addDataType:[],
	rowKeys:[],
	showTip:false // 是否禁止选择(如果最多选择8条)
}
}

页面为在这里插入图片描述

rowSelection() {
      // const selectedRowKeys = this.selectedRowKeys
      const self = this
      return {
        columnTitle: '选择',   // 去掉头部全选框
        hideDefaultSelections: true,
        // selections: { key: 1 },
        selectedRowKeys: self.rowKeys,  //  选中的key值
        onChange: (selectedRowKeys, selectedRows) => {
          // 勾选改变触发事件
          if (selectedRows.length <= 7) {
            self.changeDataType = selectedRows
            self.addDataType()
            this.showTip = false
          } else {
            // self.$message.error('数据最多选择8个')
            this.showTip = true
          }
        }
      }

在table中插入选择框,想要将头部全选框去掉直接在rowSelection中设置columnTitle: ‘选择’;selectedRows是勾选中的数组集合,selectedRowKeys是选中内容中的key值,可以通过将id设置成key就可以了
如果要做到连动选择,其主要的就是selectedRowKeys和selectedRows,将勾选的selectedRows赋值给侧边的数据


deleteDataType(removedTag) {
      // 侧边数据删除
      const { rowKeys } = this
      const newArr = []
      this.rowKeys = []
      // tag标签close事件是diaplay:none到dome元素上,所有需要用到afterClose  key不能使用index,否则删除事件有问题
      const tags = this.dataType.filter(tag => tag.id !== removedTag)
      this.dataType = tags
      rowKeys.forEach(list => {
        if (list !== removedTag) {
          newArr.push(list)
        }
      })
      this.rowKeys = [...newArr]
    },
addDataType() {
      // 勾选列表数据
      this.dataType = []
      this.rowKeys = []
      console.log(this.changeDataType)
      this.changeDataType.forEach(list => {
        if (list.templateItemId && list.selectItem) {
          // 初始化的时候
          this.dataType.push({ title: list.dataTypeName, id: list.templateItemId })
          this.rowKeys.push(list.templateItemId)
        }
        if (list.key) {
          // 点击多选的时候
          this.dataType.push({ title: list.dataTypeName, id: list.key })
          this.rowKeys.push(list.key)
        }
      })
    },
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值