From a2fa6e3b7efa034337c7599a7a84e1bd3ad7523c Mon Sep 17 00:00:00 2001 From: 07akioni <07akioni2@gmail.com> Date: Mon, 19 Aug 2019 15:23:24 +0800 Subject: [PATCH] refactor(select): change payload of change event to v-model new value --- .../selectDemo/changeEvent.demo.vue | 4 +-- .../selectDemo/changeEventEmitItem.demo.vue | 4 +-- packages/common/Select/src/MultipleSelect.vue | 33 +++++++++++-------- 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/demo/components/selectDemo/changeEvent.demo.vue b/demo/components/selectDemo/changeEvent.demo.vue index 22c6d3d31..5b147d8f4 100644 --- a/demo/components/selectDemo/changeEvent.demo.vue +++ b/demo/components/selectDemo/changeEvent.demo.vue @@ -91,8 +91,8 @@ export default { } }, methods: { - handleChange (item, isSelected) { - this.$NMessage.success('item: ' + JSON.stringify(item) + ', isSelected: ' + JSON.stringify(isSelected)) + handleChange (item) { + this.$NMessage.success('value: ' + JSON.stringify(item)) } } } diff --git a/demo/components/selectDemo/changeEventEmitItem.demo.vue b/demo/components/selectDemo/changeEventEmitItem.demo.vue index 598e2196e..3d1e1253a 100644 --- a/demo/components/selectDemo/changeEventEmitItem.demo.vue +++ b/demo/components/selectDemo/changeEventEmitItem.demo.vue @@ -93,8 +93,8 @@ export default { } }, methods: { - handleChange (item, isSelected) { - this.$NMessage.success('item: ' + JSON.stringify(item) + ', isSelected: ' + JSON.stringify(isSelected)) + handleChange (value) { + this.$NMessage.success('value: ' + JSON.stringify(value)) } } } diff --git a/packages/common/Select/src/MultipleSelect.vue b/packages/common/Select/src/MultipleSelect.vue index 40eb777a4..81d106af3 100644 --- a/packages/common/Select/src/MultipleSelect.vue +++ b/packages/common/Select/src/MultipleSelect.vue @@ -269,14 +269,7 @@ export default { return valueToItem }, selectedItems () { - if (!Array.isArray(this.value)) return [] - if (this.remote) { - return this.value - .filter(value => this.valueItemMap.has(value) || this.memorizedValueItemMap.has(value)) - .map(value => this.valueItemMap.has(value) ? this.valueItemMap.get(value) : this.memorizedValueItemMap.get(value)) - } else { - return this.value.filter(value => this.valueItemMap.has(value)).map(value => this.valueItemMap.get(value)) - } + return this.mapValueToItem(this.value) }, clearedPattern () { return this.pattern.toLowerCase().trim() @@ -316,11 +309,22 @@ export default { return false } }, - emitChangeEvent (item, isSelected) { - if (this.emitItem) { - this.$emit('change', item, isSelected) + mapValueToItem (values) { + if (!Array.isArray(values)) return [] + if (this.remote) { + return values + .filter(value => this.valueItemMap.has(value) || this.memorizedValueItemMap.has(value)) + .map(value => this.valueItemMap.has(value) ? this.valueItemMap.get(value) : this.memorizedValueItemMap.get(value)) } else { - this.$emit('change', item.value, isSelected) + return values.filter(value => this.valueItemMap.has(value)).map(value => this.valueItemMap.get(value)) + } + }, + emitChangeEvent (newValue) { + if (this.emitItem) { + let selectedItems = this.mapValueToItem(newValue) + this.$emit('change', selectedItems) + } else { + this.$emit('change', newValue) } }, setPendingItem (item, index) { @@ -381,10 +385,10 @@ export default { const index = newValue.findIndex(value => value === item.value) if (~index) { newValue.splice(index, 1) - this.emitChangeEvent(item, false) + // this.emitChangeEvent(item, false) } else { newValue.push(item.value) - this.emitChangeEvent(item, true) + // this.emitChangeEvent(item, true) this.pattern = '' } this.$nextTick().then(() => { @@ -393,6 +397,7 @@ export default { } }) this.$emit('input', newValue) + this.emitChangeEvent(newValue) }, handleMenuScrollStart () { this.scrolling = true