Utilisez Vue et axios pour mettre à jour les données sans actualiser la page
<p>J'ai une page avec 2 onglets (Questions et Données) réalisée sur Vue et Axios.
Dans le premier onglet, je remplis le formulaire et je le soumets - bouton Enregistrer <strong>v-on:click="save"</strong>. </p>
<pre class="brush:php;toolbar:false;">save : function() {
axios({
méthode : 'patch',
URL : URL,
données : this.data
})
.then(fonction (réponse) {
this.data = réponse.data;
}</pré>
<p>Dans le deuxième onglet (Données), j'ai une liste de données enregistrées : </p>
<pre class="brush:php;toolbar:false;">monté() {
axios
.get('/api/recommended-products/?patient_uuid=' + '{{patient.uuid}}')
.then(response => (this.data= réponse.data.results))
}</pré>
<p>Maintenant, lorsque je modifie la réponse dans l'onglet Questions, la liste dans l'onglet Données devrait changer automatiquement. Si j'actualise la page, cela change - Mounted() fonctionne.
J'ai essayé de créer la fonction <strong>updateList()</strong>
<pre class="brush:php;toolbar:false;">updateList: function() {
axios
.get('/api/recommended-products/?patient_uuid=' + '{{patient.uuid}}')
.then(response => (this.data= réponse.data.results))
}</pré>
<p>et ajoutez-le à la fonction <strong>save()</strong>, par exemple : </p>
<pre class="brush:php;toolbar:false;">save : function() {
axios({
méthode : 'patch',
URL : URL,
données : this.data
})
.then(fonction (réponse) {
this.data = réponse.data;
this.updateList();
}</pré>
<p>Le problème est que cette méthode fonctionne une deuxième fois (parfois cela fonctionne et parfois non). Je viens donc d'ajouter <strong>location.reload();</strong> à <strong>save()</strong> mais je n'aime pas cette approche. Est-il possible de mettre à jour la liste des données sans actualiser la page ? Qu'est-ce que je fais de mal avec la fonction <strong>updateList()</strong> </p>