Vue v-if 指令

使用 v-if 指令根据 Vue 中的条件创建 HTML 元素要比使用纯 JavaScript 容易得多。

使用 Vue,您只需直接在要有条件创建的 HTML 元素中编写 if 语句。就这么简单。


Vue 中的条件渲染

Vue 中的条件呈现是通过使用 v-ifv-else-ifv-else 指令来完成的。

条件呈现是指仅当条件为 true 时才创建HTML元素,即,如果变量为 true,则创建文本 "In stock",如果变量是 false,则生成文本 "Not in stock"。

实例

根据是否有打字机库存写不同的信息:

  1. <p v-if="typewritersInStock">
  2. in stock
  3. </p>
  4. <p v-else>
  5. not in stock
  6. </p>

Vue 的条件语句

A condition, or “if-statement”, is something that is either true or false.一个条件,或者 if 语句,要么是 true,要么是 false

条件通常是两个值之间的 比较检查,如上面的实例中所示,以查看一个值是否大于另一个值。

  • 我们使用比较运算符 , >= 或者 !== 来进行此类检查。
  • 比较检查也可以与逻辑运算符(如&&或||)组合使用。
  • 请访问我们的 JavaScript 教程页面,了解有关 JavaScript 比较的更多信息。

我们可以根据库存打字机的数量进行比较检查,以确定它们是否有库存:

实例

Use a comparison check to decide whether to write “In stock” or “Not in stock” depending on the number of typewriters in storage.

根据储存的打字机数量,使用比较检查来决定是写 "In stock" 还是 "Not in stock"。

  1. <p v-if="typewritersInStock">
  2. in stock
  3. </p>
  4. <p v-else>
  5. not in stock
  6. </p>

条件渲染指令

本概述描述了用于条件呈现的不同Vue指令是如何一起使用的。

指令详情
v-if可以单独使用,也可以与 v-else-if/v-else 一起使用如果 v-If 内部的条件为 true,则不考虑 v-else-If 或 v-else
v-else-if必须在 v-if 或另一个 v-else-if 之后使用如果 v-else-If 内部的条件为 true,则不考虑后面的 v-else-Ifv-else
v-else如果 if 语句的第一部分为 false,则会发生此部分必须放在 if 语句的最后,在 v-ifv-else-if 之后。

要查看上面显示的所有三个指令的实例,我们可以使用 v-else-if 扩展前面的实例,以便用户看到 'In stock', 'Very few left!' 或 'Out of stock':

实例

根据存储的打字机数量,使用比较检查来决定是否写 'In stock', 'Very few left!' 或 'Out of stock'。

  1. <p v-if="typewriterCount > 0">
  2. in stock
  3. </p>
  4. <p v-else>
  5. not in stock
  6. </p>

使用函数的返回值

我们可以使用函数的 truefalse 返回值,而不是对 v-if 指令使用比较检查:

实例

如果某个文本包含单词 'pizza',请创建一个带有适当消息的 <p> 标签。includes() 方法是一个本地 JavaScript 方法,用于检查文本是否包含某些单词。

  1. <div id="app">
  2. <p v-if="text.includes('pizza')">The text includes the word 'pizza'</p>
  3. <p v-else>The word 'pizza' is not found in the text</p>
  4. </div>
  1. data() {
  2. return {
  3. text: 'I like taco, pizza, Thai beef salad, pho soup and tagine.'
  4. }
  5. }

上面的例子可以扩展显示 v-if 也可以创建其他标签,如 <div> 和 <img> 标签:

实例

如果某个文本包含单词 'pizza',请创建一个带有 pizza 图像的 <div> 标记和一个带有消息的 <p> 标记。includes() 方法是一个本地 JavaScript 方法,用于检查文本是否包含某些单词。

  1. <div id="app">
  2. <div v-if="text.includes('pizza')">
  3. <p>The text includes the word 'pizza'</p>
  4. <img src="img_pizza.svg">
  5. </div>
  6. <p v-else>The word 'pizza' is not found in the text</p>
  7. </div>
  8. <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
  9. <script>
  10. const app = Vue.createApp({
  11. data() {
  12. return {
  13. text: 'I like taco, pizza, Thai beef salad, pho soup and tagine.'
  14. }
  15. }
  16. })
  17. app.mount('#app')
  18. </script>

下面的实例进一步扩展。

实例

如果某个文本包含单词 'pizza' 或 'burrito',或者没有这些单词,则会创建不同的图像和文本。

  1. <div id="app">
  2. <div v-if="text.includes('pizza')">
  3. <p>The text includes the word 'pizza'</p>
  4. <img src="img_pizza.svg">
  5. </div>
  6. <div v-else-if="text.includes('burrito')">
  7. <p>The text includes the word 'burrito', but not 'pizza'</p>
  8. <img src="img_burrito.svg">
  9. </div>
  10. <p v-else>The words 'pizza' or 'burrito' are not found in the text</p>
  11. </div>
  12. <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
  13. <script>
  14. const app = Vue.createApp({
  15. data() {
  16. return {
  17. text: 'I like taco, pizza, Thai beef salad, pho soup and tagine.'
  18. }
  19. }
  20. })
  21. app.mount('#app')
  22. </script>

使用 Vue,我们现在可以以比传统 JavaScript 更容易的方式编写在特定条件下创建元素的代码。