Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

414
Vistas
cómo volver a renderizar un componente vue.js cuando cambia una variable

Tengo un componente Vue que carga los datos de los libros desde el back-end y luego los coloca en las tarjetas.

Quería permitir que el usuario cambiara la clasificación de los libros de forma predeterminada a por calificación o al más nuevo, etc., así que declaré una sorting de nombre de variable y la configuré como predeterminada y agregué un menú desplegable para cambiar la clasificación de variable de forma predeterminada, y coloque la variable en la URL que obtiene los datos del back-end como en el método get_books :

 data(){ return { audio_books:[], page:1, last_page:false, sorting:"default", } }, methods: { get_books() { axios.get('load_all_audio_books/'+this.sorting+'?page='+this.page).then(response=> { $.each(response.data.data, (key, v) => { this.audio_books.push(v); if (response.data.current_page==response.data.last_page){ this.last_page=true; } }); }) this.page++; },

el back-end :- web.php

 Route::get('/load_all_audio_books/{sort}',[\App\Http\Controllers\load_book::class,'get_all_audiobooks']);

la función de back-end: -

 public function get_all_audiobooks($sort) { if($sort=="default") { $books=DB::table('audio_books')->paginate(10); return $books; } elseif ($sort=="rate") { $books=DB::table('audio_books')->orderBy('rating','desc')->paginate(10); return $books; } elseif ($sort=="newest") { $books=DB::table('audio_books')->orderBy('created_at','desc')->paginate(10); return $books; } elseif ($sort=="oldest") { $books=DB::table('audio_books')->orderBy('rating')->paginate(10); return $books; }

ahora lo que quiero es volver a renderizar el componente cada vez que cambie la clasificación de variables.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Si desea realizar la clasificación en el backend, está a mitad de camino (encontré la parte de la page confusa, así que la eliminé temporalmente de mi demostración a continuación).

  1. Cree un método que active la llamada HTTP (hecho por método get_books )
  2. Cree un observador que escuche los cambios en el valor de sorting .
  3. Use el observador para disparar la llamada HTTP nuevamente
 <template> <!-- Other stuff --> <select v-model="sorting"> <option value="prop1">Prop 1</option> <option value="prop2">Prop 2</option> </select> <!-- Other stuff --> </template> <script> watch: { sorting(newVal, oldVal) { this.get_books(newVal) } }, mounted() { this.get_books(this.sorting) }, methods: { get_books(sort) { axios.get(`load_all_audio_books/${sort`).then(response=> { $.each(response.data.data, (key, v) => { this.audio_books.push(v); if (response.data.current_page==response.data.last_page){ this.last_page=true; } }); }) }, } </script>

Los vigilantes son una solución. Puedes hacer esto de varias maneras diferentes.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Lo resolví agregando estas dos líneas a la función que cambia el valor de la variable "ordenar"

 change_sort(sort) { this.page=1; this.sorting=sort; //the first line empty the audio_books array this.audio_books=[]; //the second line call the function that get the data from the //back end with the new sorting value then repopulate the //audio_books array with the new values this.get_books(); }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda