在Vue中实现combobox(下拉框和输入框的组合)有几种常用的方法:
<template>
<el-select v-model="selected" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<el-input v-model="inputValue"></el-input>
</template>
<script>
export default {
data() {
return {
selected: '',
inputValue: '',
options: [
{ value: '1', label: 'Option 1' },
{ value: '2', label: 'Option 2' },
{ value: '3', label: 'Option 3' }
]
};
}
};
</script>
<template>
<div>
<input
type="text"
v-model="inputValue"
@input="handleInput"
/>
<ul v-if="showOptions">
<li
v-for="option in filteredOptions"
:key="option.value"
@click="handleSelect(option)"
>{{ option.label }}</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
inputValue: '',
options: [
{ value: '1', label: 'Option 1' },
{ value: '2', label: 'Option 2' },
{ value: '3', label: 'Option 3' }
],
showOptions: false
};
},
computed: {
filteredOptions() {
return this.options.filter(option =>
option.label.toLowerCase().includes(this.inputValue.toLowerCase())
);
}
},
methods: {
handleInput() {
this.showOptions = true;
},
handleSelect(option) {
this.inputValue = option.label;
this.showOptions = false;
}
}
};
</script>
以上是两种常用的实现combobox的方式,开发者可以根据具体需求选择合适的方法进行实现。