ant design vue <a-transfer>简单穿梭框实现

该文章展示了如何在Vue中使用AntDesignVue的Transfer组件,从数据库获取数据(包括id和name)并渲染到穿梭框中,同时设置验证规则和处理变更事件。在created生命周期钩子中,通过Promise.all同步调用API获取数据并转换成组件所需的格式。

效果图

Vue

<template>                
    <a-transfer
    :data-source="assessPeople"
    :target-keys="targetKeys"
    :render="item => item.title"
    v-decorator="['userId', {
    rules:[{required:true,message:'请选择'}]
    }]"
    @change="handleChange"
    />
</template>
<script>
export default {
  data() {
    return {
      assessPeople: [],
      targetKeys: [],
    };
  },
  methods: {
    handleChange(targetKeys, direction, moveKeys) {
      console.log(targetKeys, direction, moveKeys);
      this.targetKeys = targetKeys;
    },
  },
    created() {
      Promise.all([
        AssessmentTaskApi.listByAssessPeople().then(result => {//调用方法从数据库取数据
          this.assessPeople = result//result为String数组[0]李四,[1]德标
          const assessPeople = []
          for(let i = 0;i < this.assessPeople.length;i++){
            const data = {
              key: i.toString(),
              title: `${this.assessPeople[i]}`,
              description: `description of ${i}`,
            }
            assessPeople.push(data)
          }
          this.assessPeople = assessPeople
        }),
      ]).catch(error => {
        error.message && this.$message.error(error.message)
        this.visible = false
      })
    }
};
</script>

本文基于antd 第二个穿梭框改造

穿梭框 Transfer - Ant Design Vue (antdv.com)

补充:

正常从数据库获取人的名字同时还要获取它的id,后端我选择用实体类集合接收传到前端

    created() {
      this.handler.show = this.show
      Promise.all([
        AssessmentTaskApi.listByAssessPeople().then(result => {
          // console.log('result',result)
          // console.log('result.list',result.list)
          const assessPeople = []
          const resultList = result.list
          for(let i = 0;i < resultList.length;i++){
            const data = {
              key: `${resultList[i].id.toString()}`,
              title: `${resultList[i].name}`,
              description: `description of ${i}`,
            }
            assessPeople.push(data)
          }
          this.assessPeople = assessPeople
          this.targetKeys = []//每次打开时待选项都在左侧
        }),
      ]).catch(error => {
        error.message && this.$message.error(error.message)
        this.visible = false
      })
    }

控制台:

PS:方法也可以转到show()下,如果有需求的话

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值