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>評(píng)論者的身份是私密的</h2> </div> <div v-else> <h2>其他部分</h2> </div> </div>
('review.reviewPrivacy', '==', 'keepFullyPrivate')
is just a set of comma-separated strings, and its value is the last string: 'keepFullyPrivate '
, so your tag becomes v-if="'keepFullyPrivate'"
, which is always true. Therefore, div
and its h2
will always be rendered.
The correct expression to compare review.reviewPrivacy
and 'keepFullyPrivate'
is:
review.reviewPrivacy == 'keepFullyPrivate' // 或者更好的寫法: review.reviewPrivacy === 'keepFullyPrivate'
It is a good practice to use three equal signs (====
) for strict comparison .
Therefore, the final result should be:
<div v-if="review.reviewPrivacy === 'keepFullyPrivate'"><h2>評(píng)論者的身份是私密的</h2></div>