Commit 33c826ec166c2efbb40aef493f4810baf2214eb2
1 parent
de361437
fix #5150
Showing
2 changed files
with
49 additions
and
37 deletions
Show diff stats
examples/routers/auto-complete.vue
1 | 1 | <template> |
2 | - <div style="margin: 100px;width: 200px;"> | |
3 | - <AutoComplete placement="top" transfer v-model="value" icon="ios-search" :data="data" @on-search="handleSearch" @on-change="hc" :filter-method="fm"> | |
4 | - <!--<Option v-for="item in data" :value="item" :label="item" :key="item">--> | |
5 | - <!--<span style="color: red">{{ item }}</span>--> | |
6 | - <!--</Option>--> | |
7 | - </AutoComplete> | |
8 | - </div> | |
2 | + <div style="margin: 100px;width: 200px;"> | |
3 | + <auto-complete v-model="value" :data="data" :disabled="disabled"></auto-complete> | |
4 | + </div> | |
9 | 5 | </template> |
10 | 6 | <script> |
11 | - | |
12 | - export default { | |
13 | - props: { | |
14 | - | |
15 | - }, | |
16 | - data () { | |
17 | - return { | |
18 | - value: '', | |
19 | - data: [], | |
20 | -// data: ['Burns Bay Road', 'Downing Street', 'Wall Street'] | |
21 | - }; | |
22 | - }, | |
23 | - computed: {}, | |
24 | - methods: { | |
25 | - handleSearch (value) { | |
26 | - this.data = !value ? [] : [ | |
27 | - value + '@qq.com', | |
28 | - value + '@sina.com', | |
29 | - value + '@163.com' | |
30 | - ] | |
31 | - }, | |
32 | - hc (v) { | |
33 | -// console.log(v) | |
34 | - }, | |
35 | - fm (value, item) { | |
36 | - return item.toUpperCase().indexOf(value.toUpperCase()) !== -1; | |
37 | - } | |
38 | - } | |
7 | +export default { | |
8 | + data() { | |
9 | + return { | |
10 | + value: "", | |
11 | + disabled: false, | |
12 | + data: [] | |
39 | 13 | }; |
40 | -</script> | |
41 | 14 | \ No newline at end of file |
15 | + }, | |
16 | + methods: {}, | |
17 | + created() { | |
18 | + setTimeout(() => { | |
19 | + this.value = "1.0.0.5"; | |
20 | + this.data = [ | |
21 | + "12412515", | |
22 | + "123444", | |
23 | + "12355", | |
24 | + "12345", | |
25 | + "12312", | |
26 | + "1234", | |
27 | + "123", | |
28 | + "111", | |
29 | + "5.2.3.4", | |
30 | + "1.2.3.4", | |
31 | + "1.2.3.4.5", | |
32 | + "1.2.3.4.5.6", | |
33 | + "1.2.3.4.5.6.7", | |
34 | + "1.0.0.8", | |
35 | + "1.0.0.5", | |
36 | + "whb-03" | |
37 | + ]; | |
38 | + // this.disabled = true; | |
39 | + }, 1000); | |
40 | + } | |
41 | +}; | |
42 | +</script> | ... | ... |
src/components/select/select.vue
... | ... | @@ -635,7 +635,18 @@ |
635 | 635 | }, ANIMATION_TIMEOUT); |
636 | 636 | }, |
637 | 637 | onQueryChange(query) { |
638 | - if (query.length > 0 && query !== this.query) this.visible = true; | |
638 | + if (query.length > 0 && query !== this.query) { | |
639 | + // in 'AutoComplete', when set an initial value asynchronously, | |
640 | + // the 'dropdown list' should be stay hidden. | |
641 | + // [issue #5150] | |
642 | + let isInputFocused = | |
643 | + document.hasFocus && | |
644 | + document.hasFocus() && | |
645 | + document.activeElement === this.$el.querySelector('input'); | |
646 | + | |
647 | + this.visible = isInputFocused; | |
648 | + } | |
649 | + | |
639 | 650 | this.query = query; |
640 | 651 | this.unchangedQuery = this.visible; |
641 | 652 | this.filterQueryChange = true; | ... | ... |