Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

239
Views
cómo eliminar una fila con v-for

para eso estoy llenando con un push y también agregando un índice a cada fila, lo que necesito es borrar la fila.

 addTrabajo(state) { state.trabajos.push({ vehicle_id: state.newOrdenTrabajo.vehicle_id, km: state.newOrdenTrabajo.km, descripcion: state.newOrdenTrabajo.descripcion, }) },

ingrese la descripción de la imagen aquí

OrdenTrabajo.vue

 <table class="table table-hover table-striped mt-3 table-sm text-white bg-dark"> <thead> <tr> <th>#</th> <th>Trabajo</th> <th></th> </tr> </thead> <tbody> <tr v-for="(trabajo, index) in trabajos" :key="index"> <td>{{index + 1}}</td> <td>{{ trabajo.descripcion }}</td> <td> <a href="#" class="btn btn-danger btn-sm" @click.prevent="removeFromTrabajo({ id: index + 1 })" data-toggle="tooltip" data-placement="top" title="Eliminar"> <i class="fas fa-ban"></i> </a> </td> </tr> </tbody> </table>

guión.js

 removeFromTrabajo(state, data) { let found = state.trabajos.indexOf(data.id) state.trabajos.splice(found) },

El problema es que al eliminar se elimina el último aunque no sea el seleccionado. Por ejemplo: selecciono el primero, pero el último se está eliminando.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Solo necesita pasar el index a la función. En removeFromTrabajo puede acceder directamente a la lista usando this.trabajos , verificar si el elemento existe y luego usar Array#splice para eliminar el elemento en este índice pasando un segundo parámetro:

deleteCount (Opcional) : : Un entero que indica el número de elementos en la matriz para eliminar desde el principio. Si se omite deleteCount , o si su valor es igual o mayor que array.length - start (es decir, si es igual o mayor que el número de elementos que quedan en la matriz, comenzando por start), entonces todos los elementos desde el principio hasta el final de la matriz se eliminará . Si deleteCount es 0 o negativo, no se elimina ningún elemento.

 new Vue({ el: "#table", data: () => ({ trabajos: [ { descripcion: '1' }, { descripcion: '2' }, { descripcion: '3' } ] }), methods: { removeFromTrabajo(index) { const item = this.trabajos[index]; if(item) { this.trabajos.splice(index, 1); } } } });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <script src="https://kit.fontawesome.com/a076d05399.js"></script> <table id="table" class="table table-hover table-striped mt-3 table-sm text-white bg-dark"> <thead> <tr><th>#</th> <th>Trabajo</th><th></th></tr> </thead> <tbody> <tr v-for="(trabajo, index) in trabajos" :key="index"> <td>{{index + 1}}</td> <td>{{ trabajo.descripcion }}</td> <td> <a href="#" class="btn btn-danger btn-sm" @click.prevent="removeFromTrabajo(index)" data-toggle="tooltip" data-placement="top" title="Eliminar"> <i class="fas fa-ban"></i> </a> </td> </tr> </tbody> </table>

about 4 years ago · Juan Pablo Isaza Report

0

Estás pasando solo id en un objeto, es decir

 removeFromTrabajo({ id: index + 1 })

Demostración en vivo usando filter

Demostración de Codesandbox

Por lo tanto, debe recibir un solo argumento con una id y debe eliminarlo como:

 removeFromTrabajo(data) { console.log(this.trabajos); this.trabajos = this.trabajos.filter((o, index) => data.id !== index + 1); },
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!