Rendu conditionnel dans Vue : afficher uniquement si la valeur du champ Firestore correspond à une valeur de chaîne spécifique
P粉007288593
P粉007288593 2023-08-28 18:48:23
0
2
547
<p>Les champs de la base de données Firestore (champs <code>reviewPrivacy</code> dans la collection "review") sont de type chaîne, remplis par les entrées du formulaire Vue (boutons radio), avec trois réponses possibles (valeurs) L'une est < ;code>keepFullyPrivate</code>. </p> <p>Si la valeur de <code>review.reviewPrivacy</code> est <code>keepFullyPrivate</code>, je souhaite montrer que <code><h2> l'identité du réviseur est privée< h2></code>. </p> <p>Une fois que cela fonctionnera, j'ajouterai les options <code>v-if-else</code> et <code>v-else</code> pour afficher un contenu différent pour chaque option. </p> <p>Mon code est le suivant. </p> <p>Aucune erreur n'est signalée dans VSC, mais le texte de la balise <code><h2></code> apparaît toujours, quelle que soit la valeur de <code>review.reviewPrivacy</code> qu'il soit égal ou non à <code>keepFullyPrivate</code>. </p> <pre class="brush:php;toolbar:false;"><div v-if="('review.reviewPrivacy', '==', 'keepFullyPrivate')"><h2> L'identité du commentateur est privée</h2></div></pre> <p>Mise à jour (informations supplémentaires) : </p> <ul> <li>J'utilise la version Vue 3.2.1</li> <li>Les données obtenues depuis Firestore sont correctes. Par exemple, dans le même parent que le code ci-dessus, cette ligne de code <code><p>Choix de confidentialité pour cette révision : {{ review.reviewPrivacy }}</p></code> Affichez le texte suivant : <em>Choix de confidentialité pour ce commentaire : postAnonPublic</em>, qui est une condition <code>v-else-if</code> ≪/li> </ul> <p>Deuxième mise à jour : Comme demandé dans les commentaires, faites du code un bloc complet : </p> <pre class="brush:php;toolbar:false;"><div class="review-detailZ"> <div> <!-- BEGIN colonne principale (gauche) --> <p>Choix de confidentialité pour cet avis : {{ review.reviewPrivacy }}</p> <br /> <!-- Utilisation de la version Vue 3.2.1 --> <div v-if="('review.reviewPrivacy', '==', 'keepFullyPrivate')"><h2>L'identité de l'évaluateur est privée</h2></div> <div v-else-if="('review.reviewPrivacy', '==', 'postAnonPublic')"><h2>Anonyme - Réviseur : {{ review.userName }}</ h2> ;</div> <div v-else><h2>L'évaluateur a choisi la divulgation complète - nom complet {{ review.userFirstName }} {{ review.userLastName }}</h2></div> <br /> <p>Créé il y a {{ review.createdAt }} jours</p> <br /> </div></pre> <p>Merci ! </p>
P粉007288593
P粉007288593

répondre à tous(2)
P粉864872812

new Vue({
  el: "#app",
  data: {
    review: { reviewPrivacy:0 },
    keepFullyPrivate:0
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.js"></script>
<div id="app">
<div v-if="review.reviewPrivacy == keepFullyPrivate">
   <h2>评论者的身份是私密的</h2>
</div>
<div v-else>
<h2>其他部分</h2>
</div>
</div>
P粉265724930

('review.reviewPrivacy', '==', 'keepFullyPrivate')只是一组以逗号分隔的字符串,并且它的值为最后一个字符串:'keepFullyPrivate',所以你的标记变成了v-if="'keepFullyPrivate'",它总是为真。因此,div及其h2 sera toujours rendu.

L'expression correcte pour comparaison review.reviewPrivacy'keepFullyPrivate' est :

review.reviewPrivacy == 'keepFullyPrivate'

// 或者更好的写法:
review.reviewPrivacy === 'keepFullyPrivate'

C'est une bonne pratique de faire des ===comparaisons strictes en utilisant trois signes égaux ().

Le résultat final devrait donc être :

<div v-if="review.reviewPrivacy === 'keepFullyPrivate'"><h2>评论者的身份是私密的</h2></div>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal