v-如果多个条件不起作用

时间:2018-08-12 07:08:55

标签: javascript vue.js

<template>
<div>
    <h2>{{weatherData.city}}</h2>
    <h3>{{weatherData.weather}}</h3>
    <rain-cloud v-if="iconSelect==='09d'"/>
    <sun-cloud v-if="iconSelect==='04d'"/>
    <sunshine v-if="iconSelect=='01d'"/>
    <thunder-cloud v-if="iconSelect=='11d'"/>
    <windy-cloud v-if="iconSelect=='50d'"/>
    <snow-cloud v-if="iconSelect=='13d'"/>
    <div class="container">
        <h2>{{weatherData.temperature}}°C</h2>
        <h4>max temperature: {{weatherData.tempMax}}°C</h4>
        <h4>min temperature: {{weatherData.tempMin}}°C</h4>
        <h4>humidity: {{weatherData.humidity}}%</h4>
    </div>
</div>
</template>

computed:{
        iconSelect(){
            if(this.weatherData.icon==="04n" || "04d"){
                this.weatherData.icon="04d"
            }
            else if(this.weatherData.icon==="01d"|| "01n"){
                this.weatherData.icon="01d"
            }
            else if(this.weatherData.icon==="11d"|| "11n"){
                this.weatherData.icon="11d"
            }
            else if(this.weatherData.icon==="50d"|| "50n"){
                this.weatherData.icon="50d"
            }
            else if(this.weatherData.icon==="13d"|| "13n"){
                this.weatherData.icon="13d"
            }
            else if(this.weatherData.icon==="09d"||"09n"||"10d"||"10n"){
                this.weatherData.icon="09d"
            }
            return this.weatherData.icon
 }

每个组件都是SVG动画。当语句为真时,我只想渲染一个。但是v-if不支持乘法条件。有任何想法吗?每个天气都有图标代码,例如“ 01d”和“ 01n”表示白天和夜晚都清晰。但是我只需要使用一个SVG

1 个答案:

答案 0 :(得分:1)

write_item确实支持多种条件-例如,假设您具有:

v-if

您将能够编写如下语句:

new Vue({
  el: '#app',
  data: {
    x: 1,
    y: 2
  }
})

Vue还提供了<div v-if="x === 1 || y === 3"> ... </div> v-else-if="condition"指令。

您在v-else内的情况也有问题。 您已按照以下格式编写条件:iconSelect()

此条件将始终计算为if(this.weatherData.icon === "04n" || "04d"),因为即使true为假(weatherData.icon === "04n"设置为其他值),也会计算第二个表达式weatherData.icon-并计算为"04d",在有条件的情况下,它等于"04n"

为使这些条件能够按预期工作,它们应采用以下格式:

true

或者,在您的if(this.weatherData.icon === "04n" || this.weatherData.icon === "04d")内,您需要类似地更改<template>的条件:

v-if