0
votes

Vue Lifecycle: L'objet est indéfini lors de la liaison des attributs

Je semble avoir un problème avec le Vue Lifecycle - les objets globaux que je récupère des données dans le DOM en utilisant quelque chose comme {{family.plusone}} est défini.

Lorsque je l'utilise comme un attribut tel que : coché = "family.plusone" // en attendant vrai comme valeur, il est indéfini.

J'ai essayé d'exécuter le : check = "appelez ()" et de la connecter à la console.

Je reçois deux appels, un dicton

family.plusone est indéfini

et un autre journal à la console disant

family.plusone étant vrai

Quelle est la valeur que je m'attendais. xxx

{{family.plus == 1}} dans la portée Affiche vrai mais le : coché = "(family.plusone == 1)" est faux


0 commentaires

3 Réponses :


0
votes

Premièrement, si vous passez juste family.plusone, quel est le résultat à l'enfant ?, Non défini?

Deuxièmement, vous pouvez utiliser une propriété calculée comme

: coché = "calculéfamilyplusone"

calculé: { calculéFamilyPlusone: { if (this.family.plusone == 1) { retourne vrai }autre { renvoyer faux } } }


1 commentaires

Salut Ignacio! Merci pour votre réponse. Quand j'ai tenté d'utiliser une propriété calculée. La chose la plus étrange arrive. Il fait deux appels à calculéFamilyPlusone. Je sais cela parce que je mettais une console.log (this.family.plusone) dans la propriété calculée. Le premier appel imprime "indéfini" et le deuxième appel est "vrai". Par conséquent, dans la propriété DOM - ma propriété calculée ne montre que la valeur lorsque PlusOne est indéfinie. Folie!



0
votes

Je suppose que votre objet family n'existe pas dans la liaison des données par défaut dans la méthode data () {} méthode qui est généralement sur un vue.js composant. Cela signifierait qu'avant le montage du composant, Vue ne connaît pas la valeur lorsqu'elle compilait le modèle. Il apparaît donc comme si la valeur est indéfinie. Ensuite, à un moment donné, vous ne mettez probablement pas à jour que cette propriété de la famille . Cela signifie que l'état réactif de l'objet n'a jamais changé, alors vue.js ne sait pas qu'il doit recompaliser le modèle ( réactif" GOTCHA ").

Pour vérifier que je suis correct, assurez-vous d'utiliser la méthode VUE.SET () ou réactivez un nouvel objet avec la valeur de la propriété mise à jour de la famille code> objet.


1 commentaires

Bonjour Th3n3wguy, dans la méthode Data (), j'ai ce qui suit: Data () {retour {famille: {}}; J'ai aussi ceci qui suit: monté () {this.populatopleople (); Componterventdler.upgradedom (); }, ceci.populatopleople (); Fonction mise à jour ceci.family. Je suis capable d'utiliser les objets ceci.Family avec tout le reste (boutons radio, span, h2) C'est tellement étrange avec cet interrupteur.



0
votes

J'ai joué avec les phases de cycle de vie xxx

Cela m'a permis de mettre à jour les données avant que le DOM ait été chargé et suivant certaines solutions, j'appelle Componterventdler.upgradedom () pour montrer les commutateurs et boutons radio correctement.


0 commentaires