1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- <template>
- <el-select-v2 v-model="value" style="width: 240px" multiple filterable remote :remote-method="remoteMethod" clearable :options="options" :loading="loading" placeholder="Please enter a keyword" />
- </template>
- <script lang="ts" setup>
- import { ref } from 'vue'
- const states = [
- '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',
- ]
- const list = states.map((item): ListItem => {
- return { value: `value:${item}`, label: `label:${item}` }
- })
- interface ListItem {
- value: string
- label: string
- }
- const value = ref([])
- const options = ref<ListItem[]>([])
- const loading = ref(false)
- const remoteMethod = (query: string) => {
- if (query !== '') {
- loading.value = true
- setTimeout(() => {
- loading.value = false
- options.value = list.filter(item => {
- return item.label.toLowerCase().includes(query.toLowerCase())
- })
- }, 200)
- } else {
- options.value = []
- }
- }
- </script>
|