el-radio-group change事件获取老值

Element-ui 之 Radio-Group 组件的源码分析 文章将从`Radio-Group`组件提供的属性和事件的角度,逐步分析`element-ui`的`Radio-Group`组件源代码,从而介绍如何实现一个完整的`Radio-Group`组件。 阅读详情
AI摘要

本文详细介绍了在使用Element UI的Radio组件时遇到的问题,即通过change事件无法获取到当前点击Radio的值。作者通过阅读源码发现,Radio组件的change事件实际上是传递的model值,而非预期的label值。为解决这个问题,作者转向使用input事件,并发现已有相关GitHub issue。最后,作者建议在类似场景中使用input事件来替代change事件,以实现预期功能。

先说问题,在点击el-radio时,需要先判断一下,根据判断结果决定本次点击是否有效,直接用v-model是实现不了这种效果的,所以就需要把v-model拆开——绑定value属性和监听它的input或change事件,在input或change中判断,真正需要起作用时把value绑定的值改掉。通过查看文档发现el-radio-group(因为我把el-radio放到了el-radio-group中)有change事件,就下意识的认为el-radio-group是通过value属性和change事件来实现v-model的。

// 模板长这样
<el-radio-group :value="radioValue" @change="handleChange">
	<el-radio lable="A">A</el-radio>
	<el-radio label="B">B</el-radio>
</el-radio-group>
// js长这样
data() {
return {
  radioValue: ''
},
methods: {
  handleChange(val) {
    console.log(val)
  }
}

然而,让我意想不到的事情发生了,每次change事件获取的都是value绑定的老值,并不能获取当前点击的el-radio的值,我凌乱了。

本着自我怀疑的态度,我盯着代码不下2分钟,怎么都想不通。终于无解!还是去看看源码怎么实现的吧。到node_modules/element-ui/packages/radio/src/radio.vue中找到了答案,

methods: {
      handleChange() {
        this.$nextTick(() => {
          this.$emit('change', this.model);
          this.isGroup && this.dispatch('ElRadioGroup', 'handleChange', this.model); // 这一行,它并不是简单的把当前radio的label传出去,而是把model传出去了
        });
      }
    }

让我们看看model究竟是什么

model: {
        get() {
          return this.isGroup ? this._radioGroup.value : this.value;
        },
        set(val) {
          if (this.isGroup) {
            this.dispatch('ElRadioGroup', 'input', [val]);
          } else {
            this.$emit('input', val);
          }
          this.$refs.radio && (this.$refs.radio.checked = this.model === this.label);
        }
      },

model是一个计算属性,如果当前el-radio是嵌套在el-radio-group中的就取el-radio-group的value。在我的应用场景里面,这显然是一个bug,我打算去element-ui的github上提issue了,在经过一番搜索后,我发现了https://github.com/ElemeFE/element/issues/10197,已经有人提了,竟然2018年就提了。element-ui的贡献者建议使用input事件,我就用input事件代替了change事件了,我的element-ui版本是2.15.6,我使用input确实能满足我的功能。

可能更多的还是先入为主了,看到文档中说有change事件,就想当然的认为双向绑定用了change事件。

如果对你有帮助,请点赞哈,嘻嘻:)

elementUi vue el-radio 监听选中变化的实例代码 elementUi vue el-radio 监听选中变化的实例代码如下所述: //change是radio-group标签的事件 男 女 export default { name: 'Radio', 立即下载

相关推荐

PlutoSDR在matlab中的环境配置(包括驱动和硬件支持包)

双击下载到的驱动,除了点击接受协议和设置安装路径,其他只要点击下一步或者安装即可。登录或者注册你的账号,选择你的matlab版本(这里我的是2023b),点击下一步。设置安装路径,并选择我接受,点击下一步,即可安装完成,并在安装路径中得到。完成后,打开设备管理器,在端口和通用串行总线设备一栏,即可看见下图。点击进入,选择相应的系统安装包,这里我选择的Windows。可看到我们要安装的Pluto支持包,安装即可。右击桌面matlab,选择打开文件所在位置。右上角搜索pluto,选择并点击下一步。

weixin_53160338的博客 4865

el-radio组件change事件传递多个参数踩坑!!!

通过change 事件,默认的参数是val,然后需要把你想要的传的那个参数也传进来,关键代码就是。我传的是el-radio绑定的值和index下标,然后再在methods里面声明函数change。

m0_46467906的博客 3310

MySQL等保三级合规实践:如何安全配置root账户的本地与受信主机登录策略

本文详细介绍了MySQL在等保三级合规框架下如何安全配置root账户的本地与受信主机登录策略。通过分析root账户的特殊保护需求,提供三种安全加固方案,包括限制访问范围、限定登录IP和完全禁止远程登录,并指导创建安全的远程管理账户。文章还涵盖了密码策略强化、日志审计配置和网络层防护等关键合规要求,帮助用户实现MySQL的等保三级全面合规。

weixin_42522964的博客 260

Element 单选框 el-radio-group 点击改变触发change事件

1.代码段 <el-form-item label="会议类型" prop="kind"> <el-radio-group type="kind" v-model="form.kind" @change="agreeChange"> <el-radio label="普通会议" style="font-size: 2...

zuo_zuo_blog的博客 5万+

贝塞尔曲线基础

贝塞尔曲线于1962年由法国工程师皮埃尔·贝塞尔(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由Paul de Casteljau于1959年运用de Casteljau演算法开发,以稳定数值的方法求出贝兹曲线。

YiYeZhiNian的博客 2047

从逻辑门到存储阵列:NAND与NOR闪存命名与结构原理详解

在数字电路与半导体存储器领域,逻辑门是构建一切复杂功能的基础单元,其输入输出关系定义了计算与存储的基本原理。与非门(NAND)和或非门(NOR)作为通用逻辑门,其真值表和行为模式深刻影响了芯片设计。基于这些原理,现代闪存技术发展出了两种核心架构:NAND Flash和NOR Flash。这两种闪存的命名直接源于其内部存储单元阵列的连接方式,分别模拟了与非门和或非门的逻辑关系。这种结构差异决定了它们根本的技术价值:NOR Flash采用并联结构,支持快速随机读取,适用于代码存储与原地执行(XiP);而NAND

weixin_33377602的博客 342

Element 单选框 el-radio 点击改变触发事件使用示例

效果: 代码: <el-radio-group v-model="radioTreaty" @change="agreeChange"> <el-radio label="1" border>不同意</el-radio> <el-radio label="2" border>同意</el-rad...

烂笔头 7万+

Transformer实战(1)——词嵌入技术详解

词嵌入的核心思想是,通过将词语表示为稠密的向量,使得计算机可以更有效地处理和理解文本中的语义关系。在本节中,我们学习了单词分布式表示的概念及其实现,包括静态嵌入和动态嵌入,实现了 Word2Vec 和 GloVe 模型,并介绍了如何使用 Gensim API 探索嵌入空间。

盼小辉丶的博客 1万+

el-radio组件change事件传递多个参数

【代码】el-radio组件change事件传递多个参数。

weixin_43923808的博客 4761

OpenOCD入门到精通:第20章 Target 子系统源码分析

摘要:本章深入分析OpenOCD Target子系统的核心实现机制。重点包括:1) 通过target_type虚函数表实现多架构抽象,支持ARM、RISC-V等30+种目标;2) ARM ADIv5协议栈实现,包含DAP/AP核心数据结构和访问机制;3) 分层架构设计,从调试接口层到传输层的完整调用链路。系统采用面向对象思想,统一管理目标状态、寄存器缓存、断点/观察点等调试要素,为上层提供标准化的调试操作接口。

从事嵌入式linux android驱动开发,拥有全栈能力 178

【3天快速入门WPF】8-数据绑定基础

以下是一个简单的 WPF 数据绑定示例,使用两个TextBox控件分别表示Name和Age来进行进行数据绑定试验。运行程序后,你会看到初始界面中TextBox 中显示初始名字 “张三”,TextBox 中显示初始年龄 “25”。在 XAML 中创建一个简单的界面,包含一个 TextBox 用于输入名字,一个 TextBox 用于显示年龄。当你在 TextBox 中修改名字时,Person 对象的 Name 属性会被自动更新,反之亦然。它的主要作用是为控件及其子控件提供一个默认的数据源,用于数据绑定。

Zy100Papa的博客 969

el-radio-group 点击事件无效时,保持旧值

而@change事件handleChange,提交的是model,查看计算函数的get ,当前el-radio是嵌套在el-radio-group中的就取el-radio-group的value,所以value不会改变;场景:在点击el-radio时,需要先判断一下,根据接口请求,判断结果决定本次点击是否有效,或二次确认时选择了取消。2.若使用value,加上@change事件,发现不能获取到点击的单选值,change事件传的时旧的value。源码如下:模板中绑定的是v-model=“model”,

HDdgut的博客 4325

YOLOv13安装教程 手把手教你融合空间注意力机制(SAB)的RAB卷积模块 自动“聚焦”重要的特征 map指标提升8.96,准确率提升3.56

本文提出了一种改进的YOLOv13目标检测模型,通过引入RAB(残差注意力模块)显著提升了检测性能。实验结果显示,添加RAB模块后,mAP指标提升了8.96,准确率提高了3.56%。文章详细介绍了RAB模块的实现方法:1)采用多级残差连接增强特征提取能力;2)结合空间注意力机制(SAB)自动聚焦关键区域;3)通过1×1卷积实现通道维度压缩与恢复。同时提供了完整的模型移植方案,包括配置文件修改、任务处理代码调整以及模块实现细节,为YOLO系列模型的性能优化提供了有效参考。

FJN110的博客 647

elementUI中的 Radio Events的change事件的触发

在使用elementUI中的el-radio-group时发现官方文档没有栗子,只有参数解释,于是自己试了一下 <el-radio-group v-model="radio1" :change="change"> <el-radio-button label="新增用户"></el-radio-button> <el-radio-button ...

luoteen的博客 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Element-Plus el-radio-group 标签在使用时遇到绑定值失效的问题

Element-Plus el-radio-group 标签在使用时遇到绑定值失效的问题

RanDoll_的博客 4034

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Element-UI单选框(el-radio-group)点击事情的问题

结合el-radio-group元素和子元素el-radio可以实现单选组: template部分: <el-radio-group v-model="tabPosition" v-for="item in tabs" :key="item.id" @click="toggleTab(item.id)"> <el...

weixin_33862188的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

element 框架 el-radio-group 赋值之后点击无效

当进行页面编辑给l-radio-group 赋值之后点击无效的问题。change事件里重新渲染一下页面就行了。el-radio在一组备选项中进行单选。

m0_37714008的博客 3757

el-radio-group的change事件获取不到选项值element-ui

el-radio-group的change事件获取不到选项值

jayusmazyyolk的博客 3099

Element UI 的 el-radio-group 中 change事件不触发

Element UI 的 el-radio-group 中 change事件不触发

weixin_55869175的博客 7188

el-radio-group 跳坑

el-radio-group 跳坑

Polly 794

el-Radio ----- 事件绑定

el-Radio — 事件绑定 日常绑定change事件 <el-radio-group v-model="value" @change="Handlechange"> <el-radio-button label="1">check1</el-radio-button> <el-radio-button label="2">ch...

omg_mogu的博客 5281

关于el-radio的一些思考

记录使用Vue3和elment-plus时遇到的坑

qq_53437575的博客 1102

解决el-radio-group进行表单校验时首次不生效问题

记一次解决el-radio-group进行表单校验时首次不生效问题的全过程

c28n07的博客 1699

【前端学习记录】el-radio-group的change事件

el-radio-group的踩坑记录

Note_creek的博客 2457

vue3 element plus中el-radio选中之后再次点击取消选中

vue3 element plus中el-radio选中之后再次点击取消选中

weixin_47451403的博客 4567

ElementUI中el-radio-group使用v-model绑定是属性为String字符串类型时不回显数据

场景 结合el-radio-group元素和子元素el-radio可以实现单选组,在el-radio-group中绑定v-model,在el-radio中设置好label即可,无需再给每一个el-radio绑定变量,另外,还提供了change事件来响应变化,它会传入一个参数value。 官方示例代码: <template> <el-radio-group v-model="radio"> <el-radio :label="3">备选项</el-...

BADAO_LIUMANG_QIZHI的博客 7993
上一篇: 新闻滚动插件
下一篇: 再认识cross-env
nothing_more_than
博客等级 码龄18年 75粉丝 125原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值