vue2:el-select中的@change事件如何传入自定义参数

59 篇文章 ¥19.90 ¥99.00

在 Element UI 中,el-select 组件用于创建一个下拉选择框。当选项发生变化时,你可以使用 @change 事件来监听这个变化。默认传入的是选中项的值(如果是多选,则传入一个数组)

3e7fef425ed74e03b3a75b04e713f10d.png

但是有些时候需要传入额外的自定义参数,可以通过如下方式实现

1、template中定义事件响应函数时,指定选中项值的参数名称。如下:通过(newVal)指定参数‘newVal’为传入的选中项,那么另一个参数row即是传入的自定义参数。

<el-select
    v-model="form.query1[index].field"
    placeholder="请选择查询参数"
    @change="(newVal) => handleField1Change(row, newVal)"
>
   <el-option
       v-for="item in fieldOptions"
       :key="item.field"
       :label="item.label"
       :value="item.field">
   </el-option>
</el-select>

2、函数实现

<
在 `el-select-v2` 中,可以通过 `v-model` 和 `@change` 事件结合使用,实现对选中对象的获取和属性提取。`el-select-v2` 支持直接绑定对象作为选中值,因此可以通过 `v-model` 获取完整的选中对象,并结合 `@change` 事件进一步处理选中后的逻辑。 以下是一个结合 `v-model` 和 `@change` 的示例: ```vue <template> <el-select-v2 v-model="selectedItem" :options="options" filterable placeholder="请选择" @change="handleChange" style="width: 240px" /> <p>当前选中项的描述:{{ selectedItem ? selectedItem.description : '无' }}</p> </template> <script> export default { data() { return { selectedItem: null, options: [ { value: '1', label: '选项1', description: '描述1' }, { value: '2', label: '选项2', description: '描述2' }, { value: '3', label: '选项3', description: '描述3' } ] }; }, methods: { handleChange(value) { const selectedItem = this.options.find(item => item.value === value); if (selectedItem) { console.log('选中项的其他属性:', selectedItem.description); } } } }; </script> ``` 在该示例中,`v-model` 用于绑定选中对象,`@change` 事件则通过查找 `options` 数组来获取完整的对象信息,并提取其额外属性进行处理[^1]。 如果数据源的字段名与默认字段(`label`、`value`)不一致,还可以通过 `props` 属性进行字段映射: ```vue <template> <el-select-v2 v-model="selectedItem" :options="options" :props="props" filterable placeholder="请选择" @change="handleChange" style="width: 240px" /> </template> <script> export default { data() { return { selectedItem: null, props: { value: 'id', label: 'name', description: 'desc' }, options: [ { id: '1', name: '选项1', desc: '描述1' }, { id: '2', name: '选项2', desc: '描述2' }, { id: '3', name: '选项3', desc: '描述3' } ] }; }, methods: { handleChange(value) { const selectedItem = this.options.find(item => item.id === value); if (selectedItem) { console.log('选中项的其他属性:', selectedItem.desc); } } } }; </script> ``` 通过 `props` 配置,`el-select-v2` 能够正确识别数据源中的字段,并确保 `v-model` 和 `@change` 事件都能获取到完整的对象信息[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值