在上图中,我有两个 v-autocomplete 框,一个用于名称,另一个用于电子邮件。有没有办法连接两个 v-autocomplete 框,当用户输入姓名或电子邮件信息时,它还会显示另一个框的选项。
在图像中的示例中,用户输入了名称并获得了结果,我将如何显示该名称的相应电子邮件?
这是两个 v-autocomplete 框的代码
<v-autocomplete
v-model="item.userId"
:items="allExternalUsers"
:search-input.sync="searchUser"
label="Name"
name="name"
item-value="id"
item-text="name"
filled
dense
hide-details
clearable
autocomplete="off"
@input="updateSelection"
@change="triggerChange"
></v-autocomplete>
<v-autocomplete
v-model="item.email"
:items="allExternalUserEmails"
v-validate="'required|email'"
:error-messages="veeErrors.collect(`${item.id}_email`)"
:search-input.sync="searchEmail"
label="Email"
name="email"
item-value="id"
item-text="email"
filled
dense
hide-details
clearable
autocomplete="off"
></v-autocomplete>
这是我的手表代码
watch: {
searchUser(prefix){
if(prefix && prefix.length > 2){
this.serviceInstance.userService
.getExternalUsers(prefix)
.then(({data}) => {
this.allExternalUsers = data.externalUser.map(element => `${element.firstName} ${element.lastName}`);
this.allExternalUserEmails = data.externalUser.map(element => element.email);
this.over10Results = data.over10Results;
}).catch(error => console.log(error));
}else{
// this.allExternalUsers = [];
// this.clearExternalUsers();
}
},
searchEmail(prefix){
if(prefix && prefix.length > 2){
this.serviceInstance.userService
.getExternalUsers(prefix)
.then(({data}) => {
this.allExternalUsers = data.externalUser.map(element => `${element.firstName} ${element.lastName}`);
this.allExternalUserEmails = data.externalUser.map(element => element.email);
this.over10Results = data.over10Results;
}).catch(error => console.log(error));
}else{
this.allExternalUserEmails = [];
// this.clearExternalUsers();
}
},
这是我的后端调用
async getExternalUsers(prefix) {
const url = `/api/v1/external_user/prefix/${prefix}`;
const method = "GET";
return this.vue.$http.request({ method, url }).then(response => {
return response;
}).catch(error => console.log(error));
}
我使用 Postman 来确保我的后端调用没有问题。