要实现一个下拉框,能够从接口获取数据并支持多选,而不是回填已选择的内容,你可以使用 Vue 结合 Ant Design Vue 的 a-select
组件。下面是一个示例,演示如何设置这个功能:
- 获取数据:你需要通过 API 调用来获取可供选择的借据编号和产品名称。
- 实现多选:使用
mode="multiple"
来启用多选模式。
以下是更新后的代码示例:
<template>
<a-row>
<a-col :span="12" v-if="isCustomerAssociated">
<a-form-item label="借据编号" style="width:250%; margin-left:-130px">
<a-select
v-model:value="formModal.loanInfoCodes"
mode="multiple"
placeholder="请输入借据编号"
@search="fetchLoanInfoCodes"
:options="loanInfoCodeOptions"
/>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12" v-if="isCustomerAssociated">
<a-form-item label="产品名称" style="width:250%; margin-left:-130px">
<a-select
v-model:value="formModal.productNames"
mode="multiple"
placeholder="请输入产品名称"
@search="fetchProductNames"
:options="productNameOptions"
/>
</a-form-item>
</a-col>
</a-row>
</template>
<script>
export default {
data() {
return {
formModal: {
loanInfoCodes: [],
productNames: []
},
loanInfoCodeOptions: [],
productNameOptions: [],
};
},
methods: {
async fetchLoanInfoCodes(value) {
// 假设这里调用你的API来获取借据编号
const response = await fetch(`/api/loan-info-codes?query=${value}`);
const data = await response.json();
// 将返回的数据转换为 a-select 所需的格式
this.loanInfoCodeOptions = data.map(item => ({
value: item.code,
label: item.label || item.code // 显示文本,如果没有label就用code作为显示文本
}));
},
async fetchProductNames(value) {
// 假设这里调用你的API来获取产品名称
const response = await fetch(`/api/product-names?query=${value}`);
const data = await response.json();
// 将返回的数据转换为 a-select 所需的格式
this.productNameOptions = data.map(item => ({
value: item.name,
label: item.name // 显示文本,这里直接使用name作为显示文本
}));
}
}
};
</script>
注意事项:
- API 路径:请确保将
/api/loan-info-codes
和/api/product-names
替换为你实际的 API 接口路径。 - 数据格式:根据你的接口返回数据格式调整处理逻辑,确保生成正确的
options
数组结构。 - 搜索功能:使用
@search
属性在用户输入时触发方法,从而动态加载选项。
这样,当用户在下拉框中输入关键字时,将会触发 API 请求,并将符合条件的数据填充到下拉列表中。同时允许用户选择多个值。
内容由零声教学AI助手提供,问题来源于学员提问