Transfer 穿梭框

Vue.js Transfer组件数据操作指南
该博客介绍了Vue.js中Transfer组件的使用,强调了数据结构的要求,数据需为包含id、label和disabled的对象数组。`sourceKeys`属性用于绑定初始或动态的目标列表数据,且`key`字段作为数据的唯一标识。同时,文章提到了如何在`mounted`生命周期钩子中处理后台获取的数据。

          Transfer 的数据通过 data 属性传入。数据需要是一个对象数组,每个对象有以下属性:key 为数据的唯一性标识,label 为显示文本,disabled 表示该项数据是否禁止转移。目标列表中的数据项会同步到绑定至 v-model 的变量,值为数据项的 key 所组成的数组。当然,如果希望在初始状态时目标列表不为空,可以像本例一样为 v-model 绑定的变量赋予一个初始值。

   

<div class="shadow" style="padding:2% 2% 2% 3%;margin-top:2%;height: 430px">
  <el-transfer
    :titles="['用户未所属组', '用户已所属组']"
    @change="handleChange"
    v-model="yhYsszData"
    :data=" yhAllSszData">
  </el-transfer>
</div>

data 定义:

yhAllSszData:[],
yhYsszData:[],

写方法:

methods:{
//选取左侧内容,点击右滑图标
handleChange(value, direction, movedKeys) {
  let rightData = value;
  let yssXgzStr = {qx:rightData};//右侧修改后的数据集合
  console.log(value);
 // console.log( movedKeys);
  axios({
    method: 'post',
     url:'http://192.168.100.163:8082/dxglpt/editYZSSYHZ',
    //url: '/dxglpt/ssUserListAndTotalCount',
    params: {
      jsonStr: JSON.stringify(yssXgzStr)
    }
  }).then((response) => {
    if (response.data.flg == 'success'){
      this.$message.success("系统提示,所属组修改成功!!");
    }else{
      this.$message.error("系统提示,所属组修改失败!!");
    }
  }).catch((error) => {
    this.$message.error("系统错误,请联系开发人员@!");
  })
},

},

 

mounted () {

axios({
  method: 'post',
  url:'http://192.168.100.163:8082/dxglpt/getUserSsz',
  }).then((response) => {
  console.log(response.data);
  let ysUserGruopList=response.data.ys;
  let wsUserGruopList=response.data.ws;
  let ysArray=[];//已拥有所属组
  let allssArray=[]; //用户全部所属组信息
  for (let i=0;i<wsUserGruopList.length;i++){
    allssArray[i]={key:wsUserGruopList[i].yhzdm, label: wsUserGruopList[i].yhzmc}
  }
  for (let j=0;j<ysUserGruopList.length;j++){
    ysArray.push(ysUserGruopList[j].yhzdm)
    allssArray.push({key:ysUserGruopList[j].yhzdm, label: ysUserGruopList[j].yhzmc})
  }
  this.yhYsszData = ysArray;
  this.yhAllSszData = allssArray;
}).catch((error) => {
  this.$message.error("系统错误,请联系开发人员@!");
});

},

response.data 从后台获取的数据:

 

 

### Element Plus Transfer 穿梭自定义表格列 在 Element Plus 的 `Transfer` 组件中,默认情况下只展示简单的列表项。为了实现更复杂的数据展示需求,比如自定义表格列,可以通过插槽(slot)机制来自定义渲染内容。 #### 使用具名插槽定制每一行的内容 通过使用具名插槽 `default` 或者 `item` 来覆盖默认的选项呈现方式,可以完全控制每一条记录的具体样式和布局。下面是一个具体的例子说明如何创建带有额外信息字段的表格形式: ```html <template> <el-transfer v-model="value" :data="data"> <!-- 定制源列表中的条目 --> <template #left-column="{ option }"> <div class="custom-item"> <span>{{ option.key }}</span> - <strong>{{ option.label }}</strong><br/> Description: {{ option.desc }} </div> </template> <!-- 定制目标列表中的条目 --> <template #right-column="{ option }"> <div class="custom-item"> <span>{{ option.key }}</span> - <em style="color:red">{{ option.label }}</em><br/> Status: Active </div> </template> </el-transfer> </template> <script setup> import { ref, onMounted } from 'vue' const data = ref([]) const value = ref([]) onMounted(() => { const generateData = _ => { const data = [] for (let i = 1; i <= 15; ++i) { data.push({ key: i, label: `Option ${ i}`, desc: `This is description of Option ${ i}` }) } return data } data.value = generateData() }) </script> <style scoped> .custom-item { padding: 8px; } </style> ``` 上述代码展示了如何利用模板内的具名插槽来增强 `Transfer` 组件的功能,使得不仅能够显示基础的文字描述,还可以加入其他 HTML 元素如 `<strong>` 和 `<em>` 标签用于强调特定部分,并且可以根据实际业务逻辑调整 CSS 类或内联样式[^1]。 对于分页功能以及动态加载数据的需求,则可以在父组件中处理好相应的异步请求,在合适时机更新 `data` 数组即可[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值