From 500694ba394473d0a0d097cbb12dae6164e41161 Mon Sep 17 00:00:00 2001 From: 梁灏 Date: Fri, 9 Feb 2018 16:07:24 +0800 Subject: [PATCH] fixed Select bug when options is null and keydown `up` or `down` --- examples/routers/select.vue | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------- src/components/select/select.vue | 1 + 2 files changed, 61 insertions(+), 35 deletions(-) diff --git a/examples/routers/select.vue b/examples/routers/select.vue index 5592ce0..81369a1 100644 --- a/examples/routers/select.vue +++ b/examples/routers/select.vue @@ -219,15 +219,25 @@ @@ -235,37 +245,52 @@ export default { data () { return { - cityList: [ - { - value: 'New York', - label: 'New York' - }, - { - value: 'London', - label: 'London' - }, - { - value: 'Sydney', - label: 'Sydney' - }, - { - value: 'Ottawa', - label: 'Ottawa' - }, - { - value: 'Paris', - label: 'Paris' - }, - { - value: 'Canberra', - label: 'Canberra' - } - ], - model11: 'New York', - model12: [], - model13: 'New York' + model13: '', + loading1: false, + options1: [], + model14: [], + loading2: false, + options2: [], + list: ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New hampshire', 'New jersey', 'New mexico', 'New york', 'North carolina', 'North dakota', 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode island', 'South carolina', 'South dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington', 'West virginia', 'Wisconsin', 'Wyoming'] + } + }, + methods: { + remoteMethod1 (query) { + if (query !== '') { + this.loading1 = true; + setTimeout(() => { + this.loading1 = false; + const list = this.list.map(item => { + return { + value: item, + label: item + }; + }); + this.options1 = list.filter(item => item.label.toLowerCase().indexOf(query.toLowerCase()) > -1); + }, 200); + } else { + this.options1 = []; + } + }, + remoteMethod2 (query) { + if (query !== '') { + this.loading2 = true; + setTimeout(() => { + this.loading2 = false; + const list = this.list.map(item => { + return { + value: item, + label: item + }; + }); + this.options2 = list.filter(item => item.label.toLowerCase().indexOf(query.toLowerCase()) > -1); + }, 200); + } else { + this.options2 = []; + } } } } + diff --git a/src/components/select/select.vue b/src/components/select/select.vue index 0404b47..a6f54c6 100644 --- a/src/components/select/select.vue +++ b/src/components/select/select.vue @@ -556,6 +556,7 @@ }, resetScrollTop () { const index = this.focusIndex - 1; + if (!this.optionInstances.length) return; let bottomOverflowDistance = this.optionInstances[index].$el.getBoundingClientRect().bottom - this.$refs.dropdown.$el.getBoundingClientRect().bottom; let topOverflowDistance = this.optionInstances[index].$el.getBoundingClientRect().top - this.$refs.dropdown.$el.getBoundingClientRect().top; -- libgit2 0.21.4