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.

Usando v-slot:body con v-checkbox selector de fila

Cuando uso v-slot:body con un v-checkbox para la selección de fila, obteniendo un comportamiento inesperado en comparación con una v-data-table sin ningún v-slot:body. Cuando el objeto “items” cambia, todos los checkboxes son “seleccionados” en el v-slot:body.

¿Qué es diferente entre mi v-checkbox y el utilizado por la v-data-table sin v-slot:body? ¿Existe alguna manera de solucionar esto mientras se utiliza el slot body?

<v-data-table v-model="selected" :headers="headers" :items="desserts" item-key="name" show-select="" dense="" hide-default-footer="" class="elevation-1">
  <template v-slot:body="{ items }">
    <tbody>
      <tr v-for="d in items" :key="d.name">
        <td>
          <v-checkbox v-model="selected" :value="d" style="margin:0px;padding:0px" hide-details=""></v-checkbox>
        </td>
        <td>{{ d.name }}</td>
        <td>{{ d.calories }}</td>
      </tr>
    </tbody>
  </template>
</v-data-table>

Reproducción: https://codepen.io/Straktor/pen/gOGpoqJ

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La diferencia entre el v-checkbox utilizado en v-slot:body y el utilizado por el v-data-table sin v-slot:body es que el primero utiliza v-model="selected", mientras que el segundo utiliza v-model="selected" y :value="item".

    Para solucionar el comportamiento inesperado al seguir utilizando el body slot, puedes cambiar el v-checkbox en el body slot para que utilice :value="d" en lugar de :value="false". Esto le indica al checkbox que el valor de cada casilla de verificación debe corresponder al elemento pasado, en lugar de un valor estático de falso.

    <v-checkbox v-model="selected" :value="d" style="margin:0px;padding:0px" hide-details=""></v-checkbox>
    

    Al establecer la propiedad :value como d, el checkbox se enlazará correctamente con el array seleccionado, actualizando los elementos seleccionados solo cuando se selecciona o deselecciona una casilla de verificación.

    Aquí tienes el código actualizado en Codepen: https://codepen.io/wisdomkeeper/pen/LYyRLPe

Comments are closed.