Я создаю загружаем больше функциональности в v-autocomplete
(vuetify's
компонент).
Вот мои логики c:
-1: Зарегистрируйте keyup
функцию события и, , если текст содержит более 2 символов, он будет вызывать fetch
, вот код:
// Data
Search = '';
CurrentPage = 1;
Timer;
// Search
search(event) {
const value = event.target.value;
if (!!value && value.length > 2) {
if (this.Timer) {
clearTimeout(this.Timer);
}
this.Timer = setTimeout(() => {
this.fetch(false);
}, 500);
}
-2: Здесь fetch
функция, которая будет вызывать API:
fetch(IsLoadMore) {
if (IsLoadMore) {
this.CurrentPage++;
API.get(this.Search, this.CurrentPage);
} else if (!!this.Search && this.Search.length > 2) {
this.CurrentPage = 1;
API.get(this.Search, this.CurrentPage);
}
}
-3: А вот и компонент:
<v-autocomplete
:search-input.sync="Search"
cache-items
@keyup="search"
>
<template v-slot:append-item>
<v-btn
small
class="pa-0"
block
color="success"
@click="fetch(true)" <!-- Load More -->
>Load More</v-btn>
</v-autocomplete>
Теперь у меня возникли некоторые проблемы, давайте разберемся с некоторыми примерами ввода :
- Действие => Загрузка страницы ,
CurrentPage = 1, Search = ''
Данные поступают со страницы 1 из API.
Действие =>
Загрузить больше ,
CurrentPage = 2, Search = ''
Данные поставляются со страницей 2 из API.
Действие =>
Загрузить больше ,
CurrentPage = 3, Search = ''
Данные поставляются со страницей 3 из API.
Действие =>
Загрузить больше ,
CurrentPage = 4, Search = ''
Данные поступают со страницы 4 из API.
Action =>
Keyup ,
CurrentPage = 4, Search = 'Vu'
<= <em>Vu длина
< 2
, поэтому данные остаются теми же
Action =>
Keyup ,
CurrentPage = 1, Search = 'Vue'
<= <em>Vue длина
> 2
, поэтому данные поступают со страницы 1 и запрос Vue от API.
Action =>
Keyup ,
CurrentPage = 1, Search = ''
Ничего не происходит, так как поиск сброшен ( text <2 </em>), но обратите внимание CurrentPage = 1
Действие =>
Загрузить еще ,
CurrentPage = 2, Search = ''
Данные поступают со страницы 2 из API, здесь начинается проблема , потому что я использую cache-items
(который на самом деле кеширует данные) Мне не нужно снова извлекать данные страницы 2, мне нужно извлекать данные страницы 5 как У меня есть данные до страницы 4
Мне нужно отметить последнюю страницу с Search < 3
, я пробовал некоторые решения, но они не работают, одно из этих решений - сделать PreviousPage = -1
, а если Search === 3
, установить PreviousPage = CurrentPage
, но это не работает, и загружайте больше соответственно.
Любые предложения ??