#vue.js #nuxt.js #vuetify.js
#vue.js #nuxt.js #vuetify.js
Вопрос:
При каждом вводе в поиске я обновляю реквизит items, но v-автозаполнение становится пустым, хотя данные в моем компоненте изменились, я попытался добавить реквизит без фильтра, это не помогло, я предполагаю, что что-то с разрушенной реактивностью, я также пытался использовать вычисляемое свойство как элементы, но результат все тот же
При каждом вводе в поиске я обновляю реквизит items, но v-автозаполнение становится пустым, хотя данные в моем компоненте изменились, я попытался добавить реквизит без фильтра, это не помогло, я предполагаю, что что-то с разрушенной реактивностью, я также пытался использовать вычисляемое свойство как элементы, но результат все тот же
<script>
import ProductCartCard from "~/components/cart/ProductCartCard";
export default {
name: "search-app",
components: {
ProductCartCard
},
props: {
items: {
type: Array,
default: () => []
}
},
data() {
return {
loading: false,
filteredItems: [],
search: null,
select: null
};
},
watch: {
search(val) {
if (!val || val.length == 0) {
this.filteredItems.splice(0, this.filteredItems.length);
return;
} else {
val !== this.select amp;amp; this.querySelections(val);
}
}
},
methods: {
querySelections(v) {
this.loading = true;
// Simulated ajax query
setTimeout(() => {
this.filteredItems.splice(
0,
this.filteredItems.length,
...this.items.filter(i => {
return (i.externalName || "").toLowerCase().includes((v || "").toLowerCase());
})
);
this.loading = false;
}, 500);
}
}
};
</script>
<template>
<div class="search-app-container">
<v-autocomplete
v-model="select"
:loading="loading"
:items="filteredItems"
:search-input.sync="search"
cache-items
flat
hide-no-data
hide-details
label="searchProduct"
prepend-icon="mdi-database-search"
solo-inverted
>
<template v-slot:item="data">
<ProductCartCard :regularProduct="data" />
</template>
</v-autocomplete>
</div>
</template>
Ответ №1:
Одно из предостережений v-autocomplete
, описанных в документации:
При использовании объектов для реквизита items вы должны связать item-text и item-value с существующими свойствами ваших объектов. По умолчанию эти значения имеют значение text и value и могут быть изменены.
Это может решить вашу проблему
Комментарии:
1. ты прав, но теперь, когда я ввожу данные, а затем удаляю, они отображают все данные, а не ничего
2. это была поддержка элементов кэша, теперь все в порядке