Отображение автозаполнения Vuetify [объект объект]

Я новичок в vue 3. Я пытаюсь использовать функцию автозаполнения vuetify для своего проекта. Я проконсультировался с официальным документом vuetify. Автозаполнение Отображение [объект Объект]. Заранее спасибо.



<script>
    import { Form, Field } from 'vee-validate';


    export default {
        components: {
            Form,
            Field,
        },
        setup(props) {
            
        },
        data() {
            return {
                add: {
                    id: 1,
                },
                states: [
                    { name: 'Florida', id: 1 },
                    { name: 'Georgia', id: 2 },
                    { name: 'Nebraska', id: 3 },
                    { name: 'California', id: 4 },
                    { name: 'New York', id: 5 },
                ],
            };
        },
        methods: {
            
            },

        
    };
</script>
<template>
<v-row>
    <v-autocomplete
    v-model = "add.id"
    :items = "states"
    item-text = "name"
    item-value = "id"
    chips
    deletable-chips
    filled
></v-autocomplete>
</v-row>
</template>



Как показать имя состояния вместо [объект объекта]

Прежде всего, какую версию Vuetify вы установили? 2.6 предназначен только для Vue 2, вы должны следовать этому руководству для Vue 3: next.vuetifyjs.com/en/getting-started/installation

Kapcash 24.12.2022 10:35
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
121
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

используйте :items = "states.map(x=> x.name)" вам нужно использовать массив строк.

Ответ принят как подходящий

Если вы используете Vuetify 3, вы должны использовать «item-title» вместо «item-text». И я думаю, что Vuetify 2.6 несовместим с Vue 3.

Дайте отзыв, если это сработало для вас или нет.

Добавьте return-object в v-autocomplete

<v-autocomplete
    v-model = "add.id"
    :items = "states"
    item-text = "name"
    item-value = "id"
    chips
    deletable-chips
    filled
    return-object
></v-autocomplete>

Прежде всего, вы упомянули неправильный URL-адрес Vuetify (или, возможно, вы используете неправильную версию), потому что Vuetify 2 несовместим с Vue 3. Итак, используйте Vuetify 3 для своей разработки.

Во-вторых, если вы не хотите выбирать несколько элементов (потому что вы не использовали multiple реквизит), то использование chips реквизита не стоит того. Однако, если вы хотите его использовать, сначала исправьте две синтаксические ошибки:

  • Используйте closable-chips вместо deletable-chips (это синтаксис Vuetify 2).
  • Используйте variant = "filled" вместо filled (это также синтаксис Vuetify 2).

Теперь причина, по которой автозаполнение показывает object object, заключается в том, что вы используете item-text, принадлежащий Vuetify 2. Вместо этого вы должны использовать item-title, и проблема будет исправлена.

Вот рабочая демонстрация вывода при использовании item-text и при использовании item-title-

<!DOCTYPE html>
<html>
  <head>
    <link
      href = "https://cdn.jsdelivr.net/npm/@mdi/[email protected]/css/materialdesignicons.min.css"
      rel = "stylesheet"
      />
    <link
      href = "https://cdn.jsdelivr.net/npm/[email protected]/dist/vuetify.min.css"
      rel = "stylesheet"
      />
  </head>
  <body>
    <div id = "app"></div>
    <script src = "https://unpkg.com/vue@3/dist/vue.global.js"></script>
    <script src = "https://cdn.jsdelivr.net/npm/[email protected]/dist/vuetify.min.js"></script>
    <script type = "text/x-template" id = "app-template">
      <v-app>
        <v-card flat>
          <v-card-text>
            <v-row no-gutters>
              <v-col>
                <h3 class = "my-2">When using "item-text"</h3>
                <v-autocomplete
                  v-model = "add.id"
                  :items = "states"
                  item-text = "name"
                  item-value = "id"
                  variant = "filled"
                  chips
                  closable-chips
                  ></v-autocomplete>
              </v-col>
              <v-col class = "ms-3">
                <h3 class = "my-2">When using "item-title"</h3>
                <v-autocomplete
                  v-model = "add.id"
                  :items = "states"
                  item-title = "name"
                  item-value = "id"
                  variant = "filled"
                  chips
                  closable-chips
                  ></v-autocomplete>
              </v-col>
            </v-row>
          </v-card-text>
        </v-card>
      </v-app>
    </script>
    <script>
      const { createApp } = Vue;
      const { createVuetify } = Vuetify;
      
      const vuetify = createVuetify();
      
      const app = createApp({
        template: "#app-template",
        data() {
            return {
                add: {
                    id: 1,
                },
                states: [
                    { name: 'Florida', id: 1 },
                    { name: 'Georgia', id: 2 },
                    { name: 'Nebraska', id: 3 },
                    { name: 'California', id: 4 },
                    { name: 'New York', id: 5 },
                ],
            };
        },
      })
      .use(vuetify)
      .mount("#app");
    </script>
  </body>
</html>

Другие вопросы по теме