Vue中的条件渲染:仅当Firestore字段值与特定字符串值匹配时显示
P粉007288593
P粉007288593 2023-08-28 18:48:23
[Vue.js讨论组]
<p>Firestore数据库字段(在“review”集合中的<code>reviewPrivacy</code>字段)是字符串类型,由Vue表单输入(单选按钮)填充,有三个可能的答案(值)之一是<code>keepFullyPrivate</code>。</p> <p>如果<code>review.reviewPrivacy</code>的值是<code>keepFullyPrivate</code>,我想要显示<code>&lt;h2&gt;评论者的身份是私密的&lt;/h2&gt;</code>。</p> <p>一旦这个工作正常,我将添加<code>v-if-else</code>和<code>v-else</code>选项,为每个选项显示不同的内容。</p> <p>我的代码如下。</p> <p>在VSC中没有标记任何错误,但无论<code>review.reviewPrivacy</code>的值是什么,<code>&lt;h2&gt;</code>标签中的文本总是显示,无论它是否等于<code>keepFullyPrivate</code>。</p> <pre class="brush:php;toolbar:false;">&lt;div v-if=&quot;('review.reviewPrivacy', '==', 'keepFullyPrivate')&quot;&gt;&lt;h2&gt;评论者的身份是私密的&lt;/h2&gt;&lt;/div&gt;</pre> <p>更新(附加信息):</p> <ul> <li>我使用的是Vue 3.2.1版本</li> <li>从Firestore获取的数据是正确的。例如,在与上面的代码相同的父级中,这行代码<code>&lt;p&gt;此评论的隐私选择:{{ review.reviewPrivacy }}&lt;/p&gt;</code>在DOM中显示以下文本:<em>此评论的隐私选择:postAnonPublic</em>,这是<code>v-else-if</code>条件。</li> </ul> <p>第二次更新:按照评论中的要求,将代码作为完整的块:</p> <pre class="brush:php;toolbar:false;">&lt;div class=&quot;review-detailZ&quot;&gt; &lt;div&gt; &lt;!-- BEGIN main (left-hand) column --&gt; &lt;p&gt;此评论的隐私选择:{{ review.reviewPrivacy }}&lt;/p&gt; &lt;br /&gt; &lt;!-- 使用Vue 3.2.1版本 --&gt; &lt;div v-if=&quot;('review.reviewPrivacy', '==', 'keepFullyPrivate')&quot;&gt;&lt;h2&gt;评论者的身份是私密的&lt;/h2&gt;&lt;/div&gt; &lt;div v-else-if=&quot;('review.reviewPrivacy', '==', 'postAnonPublic')&quot;&gt;&lt;h2&gt;匿名 - 评论者:{{ review.userName }}&lt;/h2&gt;&lt;/div&gt; &lt;div v-else&gt;&lt;h2&gt;评论者选择完全公开 - 全名为{{ review.userFirstName }} {{ review.userLastName }}&lt;/h2&gt;&lt;/div&gt; &lt;br /&gt; &lt;p&gt;创建于{{ review.createdAt }}天前&lt;/p&gt; &lt;br /&gt; &lt;/div&gt;</pre> <p>谢谢!</p>
P粉007288593
P粉007288593

全部回复(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总是会被渲染出来。

正确的比较review.reviewPrivacy'keepFullyPrivate'的表达式是:

review.reviewPrivacy == 'keepFullyPrivate'

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

使用三个等号(===)进行严格比较是一个好的实践。

因此,最终结果应该是:

<div v-if="review.reviewPrivacy === 'keepFullyPrivate'"><h2>评论者的身份是私密的</h2></div>
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号