cari

Rumah  >  Soal Jawab  >  teks badan

Paparan bersyarat dalam Vue: Tunjukkan hanya jika nilai medan Firestore sepadan dengan nilai rentetan tertentu

<p>Medan pangkalan data Firestore (<kod>ulasanPrivasi</kod> medan dalam koleksi "ulasan") adalah daripada jenis rentetan, diisi oleh input borang Vue (butang radio), dengan tiga kemungkinan jawapan (nilai) Satu ialah < ;kod>keepFullyPrivate</code>. </p> <p>Jika nilai <code>review.reviewPrivacy</code> ialah <code>keepFullyPrivate</code>, saya ingin menunjukkan bahawa <code><h2>pengulas adalah peribadi< h2></kod>. </p> <p>Sebaik sahaja ini berfungsi, saya akan menambah pilihan <kod>v-if-else</code> dan <code>v-else</code> </p> <p>Kod saya adalah seperti berikut. </p> <p>Tiada ralat dibenderakan dalam VSC, tetapi teks dalam teg <kod><h2></code> tidak kira apa nilai < tidak kira sama ada ia sama dengan <kod>keepFullyPrivate</code>. </p> <pre class="brush:php;toolbar:false;"><div v-if="('review.reviewPrivacy', '==', 'keepFullyPrivate')"><h2> Identiti pengulas adalah peribadi</h2></div></pre> <p>Kemas kini (maklumat tambahan): </p> <ul> <li>Saya menggunakan versi Vue 3.2.1</li> <li>Data yang diperoleh daripada Firestore adalah betul. Contohnya, dalam induk yang sama seperti kod di atas, baris kod ini <kod><p>Pilihan privasi untuk ulasan ini: {{ review.reviewPrivacy }}</p></code> Paparkan teks berikut: <em>Pilihan privasi untuk ulasan ini: postAnonPublic</em>, yang merupakan <kod>v-else-if</code> </li> </ul> <p>Kemas kini kedua: Seperti yang diminta dalam ulasan, jadikan kod sebagai blok lengkap: </p> <pre class="brush:php;toolbar:false;"><div class="review-detailZ"> <div> <!-- BEGIN lajur utama (sebelah kiri) --> <p>Pilihan privasi untuk ulasan ini: {{ review.reviewPrivacy }}</p> <br /> <!-- Menggunakan versi Vue 3.2.1 --> <div v-if="('review.reviewPrivacy', '==', 'keepFullyPrivate')"><h2>Identiti penyemak adalah peribadi</h2></div> <div v-else-if="('review.reviewPrivacy', '==', 'postAnonPublic')"><h2>Tanpa Nama - Penyemak: {{ review.userName }}</ h2> ;</div> <div v-else><h2>Penyemak memilih pendedahan penuh - nama penuh {{ review.userFirstName }} {{ review.userLastName }}</h2></div> <br /> <p>Dibuat {{ review.createdAt }} hari yang lalu</p> <br /> </div></pre> <p>Terima kasih! </p>
P粉007288593P粉007288593454 hari yang lalu524

membalas semua(2)saya akan balas

  • 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>

    balas
    0
  • P粉265724930

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

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

    Ungkapan yang betul untuk perbandingan review.reviewPrivacy'keepFullyPrivate' ialah:

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

    Adalah amalan yang baik untuk membuat ===perbandingan yang ketat menggunakan tiga tanda yang sama ().

    Jadi keputusan akhir sepatutnya:

    <div v-if="review.reviewPrivacy === 'keepFullyPrivate'"><h2>评论者的身份是私密的</h2></div>
    

    balas
    0
  • Batalbalas