el-select多选标签v-model绑定成对象数组且根据value删除

本文介绍了在Vue中使用el-select组件时,如何将v-model绑定到对象数组,确保属性值符合特定格式,并处理重复值的选择和删除操作。
摘要由CSDN通过智能技术生成

官网只没有明确说如何绑定v-model为对象数组

重点:v-model想绑定成对象数组,重点是属性值必须是[{label:'label1',value:'1'},{label:'label2',value:'2',...}]格式,不可以自定义属性名称

适用场景:el-select点击后不是下拉选择,可能是打开弹窗或者其他+选择的标签显示的名称有重复值

示例:

<el-select
   multiple
   v-model="value1List" //标签显示的内容
   placeholder="请选择"
   @click="openDialog"
   @change="toChange"
  >水果种类
    <el-option
       v-for="item in valueList"
       :key="item.value"
       :label="item.label"
       :value="item.value"
     >
     </el-option>
</el-select>
data:{
  return{
   //原数组
    valueList:[
       {name:"苹果",code:"1"},
       {name:"梨子",code:"2"},
       {name:"香蕉",code:"3"},
       {name:"苹果",code:"4"},
   ],
   //标签显示的值
   value1List:[],
   //勾选中的项
   selectList:[],
   //最后提交的值
   submit:[],
  }
}
//选好后返回的函数
toChoose(){
    //记录选择的项,删除标签时对比使用
    this.value2List = this.selectList
    this.value1List = this.selectList.map((item) => {
      return {
        label: item.name,
        value: item.code,
      };
    });
    console.log("value1List",this.value1List)
   //value1List [{label:"苹果",value:"1"},{label:"苹果",value:4}]
}

//删除标签时
toChange(){
  this.submit=
  this.value2List.filter((item) => {
     return this.value1List.find((item1) => {
         return item1.value == item.code;
     });
  });
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值