diff --git a/examples/docs/en-US/select.md b/examples/docs/en-US/select.md index 54efd9cbc9d..b7b31bc656b 100644 --- a/examples/docs/en-US/select.md +++ b/examples/docs/en-US/select.md @@ -453,7 +453,7 @@ Enter keywords and search data from server. }, mounted() { this.list = this.states.map(item => { - return { value: item, label: item }; + return { value: `value:${item}`, label: `label:${item}` }; }); }, methods: { diff --git a/examples/docs/es/select.md b/examples/docs/es/select.md index 9d76e9d5409..77cc383fb02 100644 --- a/examples/docs/es/select.md +++ b/examples/docs/es/select.md @@ -457,7 +457,7 @@ Introduzca palabras y datos para buscar desde el servidor. }, mounted() { this.list = this.states.map(item => { - return { value: item, label: item }; + return { value: `value:${item}`, label: `label:${item}` }; }); }, methods: { diff --git a/examples/docs/fr-FR/select.md b/examples/docs/fr-FR/select.md index 3d6a846c6e8..601e5df5dc3 100644 --- a/examples/docs/fr-FR/select.md +++ b/examples/docs/fr-FR/select.md @@ -453,7 +453,7 @@ Vous pouvez aller chercher les options sur le serveur de manière dynamique. }, mounted() { this.list = this.states.map(item => { - return { value: item, label: item }; + return { value: `value:${item}`, label: `label:${item}` }; }); }, methods: { diff --git a/examples/docs/zh-CN/select.md b/examples/docs/zh-CN/select.md index 6eaea258bcc..2dcce3d7b14 100644 --- a/examples/docs/zh-CN/select.md +++ b/examples/docs/zh-CN/select.md @@ -448,7 +448,7 @@ }, mounted() { this.list = this.states.map(item => { - return { value: item, label: item }; + return { value: `value:${item}`, label: `label:${item}` }; }); }, methods: { diff --git a/packages/select/src/option.vue b/packages/select/src/option.vue index 3491544537d..a343b5b94fe 100644 --- a/packages/select/src/option.vue +++ b/packages/select/src/option.vue @@ -153,8 +153,13 @@ }, beforeDestroy() { + const { selected, multiple } = this.select; + let selectedOptions = multiple ? selected : [selected]; let index = this.select.cachedOptions.indexOf(this); - if (index > -1) { + let selectedIndex = selectedOptions.indexOf(this); + + // if option is not selected, remove it from cache + if (index > -1 && selectedIndex < 0) { this.select.cachedOptions.splice(index, 1); } this.select.onOptionDestroy(this.select.options.indexOf(this));