You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3中如何利用数组布尔值通过v-if控制内容显隐

使用v-if根据数组对象布尔属性控制元素显隐

问题场景

需要通过flightOptionData数组中每个对象的overnight布尔属性,控制<p>+1</p>元素的显示与隐藏,尝试使用v-if="{{item.overnight}}"的写法出现问题,需正确实现方式。

初始示例代码

<v-expansion-panel v-for="item in flightOptionData" :key="item.type" elevation="0" class="rounded-lg foExpansion">
    <v-expansion-panel-title class="pa-3 bg-card" v-slot="{ open }" expand-icon="" collapse-icon="">
        <section class="foCard">
            <p>{{item.finalPrice}}</p>
            <p>{{item.number}}</p>
            <p v-if="true" class="nextDay">+1</p>
        </section>
    </v-expansion-panel-title>
</v-expansion-panel>

<script>
    data() {
        return {
            flightOptionData: [
                { finalPrice: '5.431,00', number: 'A12314', overnight: true }, 
                { finalPrice: '5.431,00', number: 'A12314', overnight: false }
            ]
        }
    }
</script>

尝试的错误代码

<v-expansion-panel v-for="item in flightOptionData" :key="item.type" elevation="0" class="rounded-lg foExpansion">
    <v-expansion-panel-title class="pa-3 bg-card" v-slot="{ open }" expand-icon="" collapse-icon="">
        <section class="foCard">
             <p>{{item.finalPrice}}</p>
             <p>{{item.number}}</p>
             <p v-if="{{item.overnight}}" class="nextDay">+1</p>
        </section>
    </v-expansion-panel-title>
</v-expansion-panel>

<script>
    data() {
        return {
            flightOptionData: [
                { finalPrice: '5.431,00', number: 'A12314', overnight: true }, 
                { finalPrice: '5.431,00', number: 'A12314', overnight: false }
            ]
        }
    }
</script>

错误原因

Vue指令(如v-if)内部直接支持JavaScript表达式,无需用{{ }}插值语法包裹。{{ }}仅用于在文本节点中插入数据,放在指令属性值里会触发语法错误。

正确实现

去掉v-if中的{{ }},直接使用表达式item.overnight即可:

<v-expansion-panel v-for="item in flightOptionData" :key="item.type" elevation="0" class="rounded-lg foExpansion">
    <v-expansion-panel-title class="pa-3 bg-card" v-slot="{ open }" expand-icon="" collapse-icon="">
        <section class="foCard">
            <p>{{item.finalPrice}}</p>
            <p>{{item.number}}</p>
            <p v-if="item.overnight" class="nextDay">+1</p>
        </section>
    </v-expansion-panel-title>
</v-expansion-panel>

<script>
    data() {
        return {
            flightOptionData: [
                { finalPrice: '5.431,00', number: 'A12314', overnight: true }, 
                { finalPrice: '5.431,00', number: 'A12314', overnight: false }
            ]
        }
    }
</script>

当item.overnight为true时,<p>+1</p>会显示;为false时则隐藏,完全符合需求。

内容的提问来源于stack exchange,提问作者Vinicius Rocha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 07:55:56