vue.js - Vuetify 异步搜索一次只提交一个字符并且不连接字符
问题描述
我有以下 vue 组件:
<template>
<v-form ref="form" @submit.prevent="search">
<v-row class="pa-0">
<v-col cols="12" md="2" class="d-flex">
<v-autocomplete
:items="projects"
item-value="id"
:item-text="item => `${item.number.number} ${item.name}`"
outlined
v-model="form.project_id"
label="Project number"
:search-input.sync="project"
dense
hide-details="auto"
class="align-self-center"
clearable
/>
</v-col>
</v-row>
</v-form>
</template>
<script>
export default {
watch: {
project( value )
{
this.queryProjects( { search: '', number: value } );
}
},
data()
{
return {
project: '',
projects: [],
}
},
methods: {
async queryProjects( search )
{
console.log(search);
if(!search)
{
return;
}
let response = await fetch(route('projects.search', search));
this.projects = await response.json();
},
}
}
</script>
该组件应根据项目编号过滤项目。该queryProject
功能被触发,但问题value
出在project
观察者身上。在输入每个数字后,自动完成字段将设置回null
,因此它不会连接完整的项目编号。因此,如果您想搜索19320
每个数字,则一一解析而不是整数。
当输入一个字符时,控制台中的输出如下:
1
观察者价值{number: "1"}
为queryProject
search
价值null
对于观察者值,看起来每个字符都会重置输入或重新呈现组件。
解决方案
问题出在线路上
:item-text="item => `${item.number.number} ${item.name}`"
当更改为item-text="name"
一切正常时。
推荐阅读
- firebase - 使用 Geofire 查询时出现 getter 错误
- python - 执行单元测试时出现 Python TypeError
- shell - 获取文件中超过一定行数的所有文本块
- c# - 在 C# 中保护临时文件
- firebase - 显示来自 firestore 两个属性的数据
- stata - 不平衡面板数据集事件前后的子采样年份
- java - 根据证书验证数据
- java - HashMap.get() 在一个片段中有效,而在另一个片段中无效,为什么?
- calendar - 如何在全日历 4.0 日模式下设置事件宽度
- html - JAWS 将标题读取为可点击,即使父 div 没有关联的点击处理程序