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

137
Views
¿Cómo actualizo los datos de mi lista cuando ya se han enviado datos en el backend? (VUE/DJANGO)

Soy nuevo en vue y trato de trabajar con django. Tengo un campo llamado estado que usa un campo booleano y establezco el valor predeterminado = Falso. Estoy tratando de actualizar los datos en el backend haciendo clic. Cuando hago clic en el div, los datos se emitirán a los padres y actualizarán el estado a !status.

Niño:

 <div @click="$emit('update-status', this.task)">{{ task.status}} </div>

Padre:

 <Task v-for="task in tasks"   :key="task.slug"   :task="task"   :slug="task.slug"   @update-status="updateStatus"/> async updateStatus(task) { let endpoint = `/api/v1/tasks/${task.slug}/`; const response = await axios.put(endpoint, { status: !task.status,   });  }

Se actualiza una vez y sigue devolviendo el mismo valor True cuando sigo haciendo clic (siempre debería devolver el estado opuesto). Tengo que actualizar manualmente mi navegador, por lo que cuando vuelva a hacer clic en él devolverá False.

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Si obtiene su objeto actualizado en respuesta, simplemente puede actualizar sus tareas:

 Vue.component('task', { template: ` <div @click="$emit('update-status', task)">{{ task.status }}</div> `, props: { task: Object } }) new Vue({ el: '#demo', data() { return { tasks: [{slug: 'a', status: false}, {slug: 'b', status: false}] } }, methods: { async updateStatus(task) { //let endpoint = `/api/v1/tasks/${task.slug}/`; /*const response = await axios.put(endpoint, { status: !task.status, });*/ const response = {slug: task.slug, status: !task.status} this.tasks = this.tasks.map(t => (t.slug === response.slug) ? response : t) } } })
 <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <div id="demo"> <Task v-for="task in tasks" :key="task.slug" :task="task" :slug="task.slug" @update-status="updateStatus"/> </div>

about 4 years ago · Santiago Trujillo Report

0

Gracias a la respuesta de @Nikola Pavicevic

Modifiqué los datos para enviarlos también en el backend.

 async updateStatus(task) { let endpoint = `/api/v1/tasks/${task.slug}/`; const data = { slug: task.slug, status: !task.status, }; const response = await axios.put(endpoint, data); this.tasks = this.tasks.map((task) => task.slug === data.slug ? data : task ); },
about 4 years ago · Santiago Trujillo 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!