recherche

Maison  >  Questions et réponses  >  le corps du texte

Rendu conditionnel dans Vue : afficher uniquement si la valeur du champ Firestore correspond à une valeur de chaîne spécifique

<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粉007288593P粉007288593454 Il y a quelques jours525

répondre à tous(2)je répondrai

  • P粉864872812

    P粉8648728122023-08-29 15:54:29

    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>

    répondre
    0
  • P粉265724930

    P粉2657249302023-08-29 10:25:42

    ('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>
    

    répondre
    0
  • Annulerrépondre