2017-07-28 1 views
0

J'ai un composantvue élément js ne rerender sur la même page

<template>somecode</template> 
<script> 
export default { 
     name: 'Card', 
     created() { 
       axios.get(apiObjUrl) 
         somecode 
       }) 
    } 
</script> 

ce mon url: http://127.0.0.1:8080/#/card/12

Mais j'ai un problème:

quand j'utilise router- lien comme ceci:

<router-link to="/card/155"> card 155</router-link> 

mes changements d'URL: http://127.0.0.1:8080/#/card/155

mais la méthode created() n'est pas déclenchée. donc je ne fais pas de nouvelle demande xhr à l'API et les données ne changent pas que dois-je faire?

+0

@VamsiKrishna https://jsfiddle.net/rowrt1x1/ – user2950593

Répondre

1

C'est juste parce que votre composant est déjà créé. Vous pouvez essayer d'utiliser le crochet de cycle de vie updated() au lieu de created().

export default { 
    name: 'Card', 
    updated() { 
    axios.get(apiObjUrl) 
    somecode 
    }) 
} 

Note: Cela ne fonctionnera que si vos modifications DOM. Si vous voulez juste écouter sur les changements d'URL et mettre à jour en conséquence, vous feriez mieux de votre route comme ceci.

export default { 
    name: 'Card', 
    created() { 
    axios.get(apiObjUrl) 
    somecode 
    }), 
    watch: { 
    '$route': function() { 
     // do your stuff here 
    } 
    } 
} 
+0

quand je change de méthode '' created' de méthode de mise à jour updated' ne soit pas tiré la première fois que je charge la page (I je ne sais pas pourquoi) rien dans la console – user2950593

+0

Je ne l'ai pas vraiment compris – user2950593

+0

Je dois appeler le même code 'axios.get (apiObjUrl)' sur la page créée lorsque j'actualise la page, et sur l'URL de changement avec 'routeur- link', alors comment le faire exactement? – user2950593

1

Comme alternative, vous pouvez configurer un attribut key sur votre <router-view> comme ceci:

<router-view :key="$route.fullPath"></router-view> 

Comme <router-view> est un composant lui-même et des clés uniques remplacement de la force du composant au lieu de le réutiliser. Vous pouvez donc utiliser des crochets de cycle de vie.

Voir la fiddle

+0

whta exactement ': key' attr fait ici? – user2950593

+0

@ user2950593'key' dit à l'algorithme DOM virtuel de Vue d'identifier les VNodes lors de la comparaison de la nouvelle liste de nœuds avec l'ancienne liste. En termes simples, il indique que le nœud doit être remplacé (rediffusé) par un nouveau, car une nouvelle clé est transmise avec un nouveau chemin d'accès à chaque changement d'itinéraire. –