【发布时间】:2021-05-09 17:17:18
【问题描述】:
我想根据来自数据源的记录使用建议自动完成的输入字段(或类似内容)。
在 Vue 中,我从包含 3000 多条记录的数据库表中检索一个数组:
data(){
return{
inboundRelation_Trelation_data: [],
}
},
mounted(){
axios.get('/app/wms/allRelations', {
params: {
"dbConn": this.connString,
}
})
.then(response => this.inboundRelation_Trelation_data = response.data);
},
根据这些数据,我想要一个自动完成输入字段和/或下拉菜单。我在网上找到了两种方法.. 1:
<select v-model="form.CUSTOMER_NAME">
<option v-for="(relation, index) in inboundRelation_Trelation_data" :value="relation.RELATIONCODE" v-text="relation.COMPANYNAME + ' | ' + relation.RELATIONCODE"></option>
</select>
这会填充一个下拉列表,但我的用户觉得这很乏味,因为他们需要快速输入字母,否则在短暂的停顿(如
另一种方法是使用数据列表:
<input list="allRelations" type="text" @focus="$event.target.select()" v-model="form.CUSTOMER_NAME">
<datalist id="allRelations">
<option v-for="(relation, index) in inboundRelation_Trelation_data" :value="relation.RELATIONCODE" v-text="relation.COMPANYNAME + ' | ' + relation.RELATIONCODE"></option>
</datalist>
这非常适用于少量数据。但是在处理 100 多条记录(或在这种情况下为 3000 多条)时,整个浏览器会在输入字母时冻结。出于某种原因,这是一个非常耗费资源的实现。我发现一些人有类似的问题,但没有解决方案。
归根结底,我只是希望我的用户能够在包含 3000 多条记录的庞大列表中进行搜索。我该如何处理?
【问题讨论】: