Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

415
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda