Vue中的條件渲染:僅當Firestore欄位值與特定字串值相符時顯示
P粉007288593
2023-08-28 18:48:23
<p>Firestore資料庫欄位(在「review」集合中的<code>reviewPrivacy</code>欄位)是字串類型,由Vue表單輸入(單選按鈕)填充,有三個可能的答案(值)之一是<code>keepFullyPrivate</code>。 </p>
<p>如果<code>review.reviewPrivacy</code>的值是<code>keepFullyPrivate</code>,我想要顯示<code><h2>評論者的身分是私密的< /h2></code>。 </p>
<p>一旦這個工作正常,我將添加<code>v-if-else</code>和<code>v-else</code>選項,為每個選項顯示不同的內容。 </p>
<p>我的程式碼如下。 </p>
<p>在VSC中沒有標記任何錯誤,但無論<code>review.reviewPrivacy</code>的值是什麼,<code><h2></code>標籤中的文字總是顯示,無論它是否等於<code>keepFullyPrivate</code>。 </p>
<pre class="brush:php;toolbar:false;"><div v-if="('review.reviewPrivacy', '==', 'keepFullyPrivate')"><h2>評論者的身分是私密的</h2></div></pre>
<p>更新(附加資訊):</p>
<ul>
<li>我使用的是Vue 3.2.1版</li>
<li>從Firestore取得的資料是正確的。例如,在與上面的程式碼相同的父級中,這行程式碼<code><p>此評論的隱私選擇:{{ review.reviewPrivacy }}</p></code>在DOM中顯示以下文字:<em>此評論的隱私選擇:postAnonPublic</em>,這是<code>v-else-if</code>條件。 </li>
</ul>
<p>第二次更新:依照評論中的要求,將程式碼作為完整的區塊:</p>
<pre class="brush:php;toolbar:false;"><div class="review-detailZ">
<div> <!-- BEGIN main (left-hand) column -->
<p>此評論的隱私選擇:{{ review.reviewPrivacy }}</p>
<br />
<!-- 使用Vue 3.2.1版 -->
<div v-if="('review.reviewPrivacy', '==', 'keepFullyPrivate')"><h2>評論者的身分是私密的</h2></div>
<div v-else-if="('review.reviewPrivacy', '==', 'postAnonPublic')"><h2>匿名- 評論者:{{ review.userName }}</ h2></div>
<div v-else><h2>評論者選擇完全公開 - 全名為{{ review.userFirstName }} {{ review.userLastName }}</h2></div>
<br />
<p>創建於{{ review.createdAt }}天前</p>
<br />
</div></pre>
<p>謝謝! </p>
('review.reviewPrivacy', '==', 'keepFullyPrivate')
只是一組以逗號分隔的字串,並且它的值為最後一個字串:'keepFullyPrivate '
,所以你的標記變成了v-if="'keepFullyPrivate'"
,它總是為真。因此,div
及其h2
總是會被渲染出來。正確的比較
review.reviewPrivacy
和'keepFullyPrivate'
的表達式是:使用三個等號(
===
)進行嚴格比較是一個好的實踐。因此,最終結果應該是: