(vuetify в nuxt js) автозаполнение не обновляется относительно реквизита items

#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. это была поддержка элементов кэша, теперь все в порядке