el-radio-groupchange 事件获取⽼值
先说问题,在点击el-radio时,需要先判断⼀下,根据判断结果决定本次点击是否有效,直接⽤v-是实现不了这种效果的,所以就需要把v-model拆开——绑定value属性和监听它的input或change事件,在input或change中判断,真正需要起作⽤时把value绑定的值改掉。通过查看⽂档发现el-radio-group(因为我把el-radio放到了el-radio-group中)有change事件,就下意识的认为el-radio-group是通过value属性和change事件来实现v-model的。
然⽽,让我意想不到的事情发⽣了,每次change事件获取的都是value绑定的⽼值,并不能获取当前点击的el-radio的值,我凌乱了。本着⾃我怀疑的态度,我盯着代码不下2分钟,怎么都想不通。终于⽆解!还是去看看源码怎么实现的吧。到node_modules/element-ui/packages/radio/src/radio.vue中到了答案,
让我们看看model究竟是什么
可能更多的还是先⼊为主了,看到⽂档中说有change事件,就想当然的认为双向绑定⽤了change事件。
如果对你有帮助,请点赞哈,嘻嘻:)// 模板长这样<el-radio-group :value="radioValue" @change="handleChange"> <el-radio lable="A">A</el-radio> <el-radio label="B">B</el-radio></el-radi
o-group>// js 长这样data() {return { radioValue: ''},methods: { handleChange(val) { console.log(val) }}
1
2
3
4
5
6
7
8
910
11
12
13
14
15methods: { handleChange() { this.$nextTick(() => { this.$emit('change', del); this.isGroup && this.dispatch('ElRadioGroup', 'handleChange', del); // 这⼀⾏,它并不是简单的把当前radio 的label 传出去,⽽是把model 传出去
}); } }1
2
3
45
6
7
8model: { 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 = del === this.label); } },
1
2
3
4
5
6
7
8
9
htmlradio添加切换事件10
11
12
13
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论