Vue: [2.0.0-rc.1] v-for et ref : $refs n'est plus réactif ?

Créé le 17 août 2016  ·  3Commentaires  ·  Source: vuejs/vue

Dans 2.0.0-rc.1, une construction comme

<p>Count: {{$refs.components && $refs.components.length}}</p>
<sub-component v-for="item in items" ref="components">

ne fonctionne plus (le nombre reste à la valeur initiale, même si items et donc le nombre de composants est modifié). Dans la v1, les tableaux de $refs seraient mis à jour de manière réactive.

Je ne sais pas s'il s'agit d'un bug ou d'une fonctionnalité, mais #2873 ne semble pas le mentionner.

Commentaire le plus utile

@yyx990803 cela signifie-t-il que l'utilisation de this.$refs.* dans les propriétés computed cessera également de fonctionner dans la v2 ou est-ce simplement l'utilisation dans les modèles ? Dois-je résoudre tout cela avec des événements personnalisés ?

Je transmets actuellement les résultats de validation des enfants au parent comme ceci.

Tous les 3 commentaires

C'est voulu - la raison en est que les $refs sont maintenant enregistrés/mis à jour pendant le processus de rendu lui-même. Il n'est pas recommandé de s'appuyer sur $refs dans les modèles car ils sont uniquement destinés à l'accès par programmation en JavaScript.

J'ai mis à jour #2873 pour inclure ceci.

@yyx990803 cela signifie-t-il que l'utilisation de this.$refs.* dans les propriétés computed cessera également de fonctionner dans la v2 ou est-ce simplement l'utilisation dans les modèles ? Dois-je résoudre tout cela avec des événements personnalisés ?

Je transmets actuellement les résultats de validation des enfants au parent comme ceci.

vous pouvez utiliser this.$forceUpdate() et setTimeout pour restituer la vue lorsque vous mettez à jour les données et constatez que $refs ne se met pas à jour de manière réactive.

this.fetchSomeShit()
.then((data) => {
  this.data = data
  setTimeout(() => {
    this.$forceUpdate()
  })
})

utilisez setTimeout pour vous assurer que les données ont été données dans ce qu'ils disent la vue taskqueue

Cette page vous a été utile?
0 / 5 - 0 notes