如何使用Vue JS在HTML中的同一标签中使用"v-if"和"v-else"?

Sha*_*jan 5 html javascript vue.js vuejs2

我在多个元素中使用Vue js条件语句.

在某些情况下,我需要将if和else放在同一个元素中来过滤元素.

在这里,我使用多个元素来应用if和else.

   <block v-if="nb == 3" align="left"></block>
   <block v-if="nb > 3" align="center"></block>
Run Code Online (Sandbox Code Playgroud)

但我想在单个元素中同时应用,

  <block v-if="nb == 3" align="left" v-else align="center"></block>
Run Code Online (Sandbox Code Playgroud)

可能吗 ?

或者其他任何解决方案都适用于此?

预先感谢.

Joe*_*lay 15

而不是使用v-if,尝试将属性绑定到三元表达式.

// : is a shorthand for v-bind:
<block :align="nb == 3 ? 'left' : 'center'"></block>
Run Code Online (Sandbox Code Playgroud)

如果你看起来有点太杂乱(或者如果你想要使用的逻辑太复杂而无法在一行中表达),你也可以尝试在组件中创建一个返回的或然后绑定到它的计算属性.."left""center"


dar*_*ten 6

您不能在同一元素上使用v-ifv-else

我个人使用计算属性。

我假设您nb是一个反应变量或类似变量。

因此,您应该寻找这样的东西:

<block v-bind:align="computedAlign"></block>
Run Code Online (Sandbox Code Playgroud)

然后在你的组件中

// assuming you're using data and not props
data() {
  return {
    nb: 1 // default
  }
},
// some other stuff that sets the nb variable in some way
computed: {
  computedAlign() => {
    if (this.nb === 3) {
      return 'left'
    } else {
      return 'center'
    }
  }
}
Run Code Online (Sandbox Code Playgroud)