el-select下拉框多选处理选中数据

这篇博客详细介绍了如何在 Vue.js 应用中利用 Element UI 的 `el-select` 组件实现多选下拉框功能。通过设置 `multiple` 和 `clearable` 属性,结合 `v-model` 和 `@change` 事件监听用户的选择变化。同时,展示了如何处理多选值,并通过 `handleChange` 方法更新 `form.custodianList`。博客还提供了一种优化过的代码实现,使用 `Array.find` 方法减少循环次数,提高效率。

在这里插入图片描述
el-select下拉框设置多选属性:multiple

<el-col :span="8">
   <el-form-item label="保管员"  label-width="120px">
      <el-select
        v-model="form.custodianList"
        :disabled="isDetail" 
        :placeholder="isDetail ? '' : '请选择保管员'"
        style="width: 100%"
        multiple  
        clearable
        @change="(value) => handleChange('custodianList', value)"
      >
        <el-option
          v-for="item in custodianList"
          :key="item.partyCode"
          :label="item.partyName"
          :value="item.partyCode"
        />
      </el-select>
    </el-form-item>
 </el-col>
** //处理保管员,保管员,装卸工多选
    handleChange(str, val) {
      let that = this
      let arr = []
      做出两种方法,逻辑都是一样的
      第一种是循环两次:代码如下
      // for (let i = 0; i < val.length; i++) {
      //   for (let j = 0; j < that.custodianList.length; j++) {
      //     if (val[i] === that.custodianList[j].code) {
      //       arr.push(that.custodianList[j])
      //     }
      //   }
      // }
	  //这里的一层if是因为三个下拉框调取的一个方法  用参数str区分不同的下拉框
      if (str === 'custodianList') { 
      第二种是使用一层for加一个Array.find方法
        for (let i in val) {
          that.custodianList.find((item) => {
            if (item.partyCode === val[i]) {
              arr.push(item)
            }
          })
        }
        that.form.custodianList = arr
      } 
    },**
在使用 `el-select` 组件实现下拉框时,页面初次加载时标记已选中的内容,可以通过绑定 `v-model` 并结合 `el-option` 的 `value` 属性来实现。`el-select` 是 Element UI 提供的一个下拉择组件,支持模式,通过设置 `multiple` 属性启用功能。 在页面初始化时,可以通过 `data` 中定义的数组来存储默认选中的值,并将该数组与 `v-model` 进行双向绑定。这样,页面加载时会自动将数组中包含的值标记为已选中状态。 ### 示例代码如下: ```html <template> <el-select v-model="selectedValues" multiple placeholder="请择"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </template> <script> export default { data() { return { // 已选中的值 selectedValues: ['option1', 'option3'], // 下拉数据 options: [ { label: '项1', value: 'option1' }, { label: '项2', value: 'option2' }, { label: '项3', value: 'option3' }, { label: '项4', value: 'option4' } ] }; } }; </script> ``` ### 实现原理说明: - `v-model`:用于绑定选中的值,`selectedValues` 是一个数组,包含所有默认选中项值。 - `multiple`:启用模式。 - `el-option`:每个项的 `value` 属性与 `selectedValues` 中的值进行匹配,匹配成功的项会自动被标记为已选中。 ### 注意事项: - `v-model` 绑定的数组中必须包含 `el-option` 中定义的 `value`,否则无法正确标记为已选中- 如果需要动态加载数据并更新选中状态,可以在数据加载完成后手动更新 `selectedValues` 数组。 通过上述方式,可以轻松实现 `el-select` 下拉框在页面初次加载时标记已选中内容的功能。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值