From 11a6548375b3ac8f8325326abe99861983ba760d Mon Sep 17 00:00:00 2001 From: 刘汉宸 Date: Wed, 22 Jul 2020 18:07:56 +0800 Subject: [PATCH] fix: 修复Select组件change事件返回值 --- examples/views/docs/component/select.md | 7 ++++++- packages/select/index.vue | 16 ++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/examples/views/docs/component/select.md b/examples/views/docs/component/select.md index e4c24ac..8844dc2 100644 --- a/examples/views/docs/component/select.md +++ b/examples/views/docs/component/select.md @@ -207,7 +207,7 @@ export default { @@ -218,6 +218,11 @@ export default { model: '', } }, + methods: { + onChange(value, item) { + console.log(value, item); + } + } } ``` diff --git a/packages/select/index.vue b/packages/select/index.vue index 132bacb..a54ba9c 100644 --- a/packages/select/index.vue +++ b/packages/select/index.vue @@ -133,21 +133,25 @@ export default { remote() { return Boolean(this.queryApi || (this.url && (this.http || this.zHttp))); }, + // Hack绑定事件,即令el-select组件绑定事件与当前z-select组件相同,且扩展部分事件返回值 bindEvents() { let _events = {}; Object.keys(this.$listeners || {}).forEach(key => { // 非绑定对象的情况下,通过change事件向上emit出当前选中项 if (key === 'change' && !this.raw) { + // 给el-select绑定change事件,且emit到z-select的change事件并拓展 _events[key] = value => { this.$emit( key, value, - this.optionsCurrent.reduce((result, item) => { - if (value.includes(item[this.valueKey])) { - result.push(item); - } - return result; - }, []), + this.multiple + ? this.optionsCurrent.reduce((result, item) => { + if (value.includes(item[this.valueKey])) { + result.push(item); + } + return result; + }, []) + : this.optionsCurrent.find(item => item[this.valueKey] === value), ); }; } else { -- libgit2 0.21.0