es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Vuetify v-model de selección múltiple no funciona.

<v-list shaped="">
  <v-navigation-drawer>
    <v-list shaped="">
      <v-list-item-group v-model="selectedItem" multiple="">
        <template v-for="(item, i) in items">
          <v-list-item :value="item">
            <v-list-item-title>{{item.text}}</v-list-item-title>
          </v-list-item>
        </template>
      </v-list-item-group>
    </v-list>
  </v-navigation-drawer>
</v-list>
data: () => ({
  selectedItem: 0,
  drawer: null,
  items: [
    { icon: 'fas fa-home', text: 'Dashboard', route: '/home' },
    { icon: 'fas fa-money-check-alt', text: 'Invoices', route: '/invoices' },
    { icon: 'fas fa-dolly', text: 'Partners', route: '/partners' },
    { icon: 'fas fa-exchange-alt', text: 'Items', route: '/items' },
  ],
}),

Un código muy simple en Vuetify (2.6.1), la selección múltiple no funciona. No puedo preseleccionar el primer elemento para que esté seleccionado también. Es probable que esté relacionado con el componente v-list-item-group.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Problema con la selección múltiple y preselección en Vuetify

    He revisado el código proporcionado y basado en mi experiencia en Vue.js y Vuetify.js, parece haber dos problemas con este código:
    – La selección múltiple no funciona correctamente.
    – La preselección del primer elemento no funciona.

    El problema parece estar relacionado con el componente v-list-item-group, que se utiliza para seleccionar varios elementos. Este componente debe estar vinculado a la propiedad v-model para definir los elementos seleccionados. Sin embargo, en este código, la propiedad selectedItem no es un array, lo que provoca el problema con la selección múltiple.

    Para solucionar este problema, la propiedad selectedItem debe definirse como un array vacío en el objeto data:

    data: () => ({
      selectedItem: [], // Definir como un array vacío
      drawer: null,
      items: [
        { icon: 'fas fa-home', text: 'Dashboard', route: '/home' },
        { icon: 'fas fa-money-check-alt', text: 'Invoices', route: '/invoices' },
        { icon: 'fas fa-dolly', text: 'Partners', route: '/partners' },
        { icon: 'fas fa-exchange-alt', text: 'Items', route: '/items' },
      ],
    }),
    

    Esto permitirá seleccionar varios elementos y también resolverá el problema de la preselección del primer elemento.

    Además, es importante tener en cuenta que la propiedad value de v-list-item debe estar vinculada al objeto item en lugar de la propiedad item.text, para agregar correctamente el elemento al array selectedItem:

    <template v-for="(item, i) in items">
      <v-list-item :value="item"> <!-- Vincular al objeto item -->
        <v-list-item-title>{{ item.text }}</v-list-item-title>
      </v-list-item>
    </template>
    

Comments are closed.