Menu
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Vue v-if 指令

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

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

Vue 中的条件渲染

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

条件渲染是指仅在条件为真时才创建 HTML 元素,例如,如果变量为 'true',则创建文本 "有货",如果变量为 'false',则创建 '缺货'。

示例

根据是否有打字机库存来写不同的消息

<p v-if="typewritersInStock">
  有货
</p>

<p v-else>
  缺货
</p>
自己试一试 »

Vue 中的条件

条件,或 "if 语句",是既可以是 true 又可以是 false 的东西。

条件通常是对两个值进行的**比较检查**,就像上面的例子一样,用来查看一个值是否大于另一个值。

  • 我们使用**比较运算符**,如 <>=!== 来进行此类检查。

  • 比较检查也可以与**逻辑运算符**结合使用,例如 &&||

  • 访问我们的 JavaScript 教程 页面,了解更多关于 JavaScript 比较的信息。

我们可以使用存储的打字机数量进行比较检查,以确定它们是否有货

示例

使用比较检查来确定是否要写 "有货" 或 "缺货",这取决于存储的打字机数量。

<p v-if="typewriterCount > 0">
  有货
</p>

<p v-else>
  缺货
</p>
自己试一试 »

用于条件渲染的指令

本概述描述了如何将用于条件渲染的不同 Vue 指令一起使用。

指令 详情
v-if 可以单独使用,也可以与 v-else-if 和/或 v-else 一起使用。如果 v-if 中的条件为 'true',则不考虑 v-else-ifv-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 扩展之前的示例,以便用户看到 '有货'、'库存很少!' 或 '缺货'

示例

使用比较检查来确定是否要写 "有货"、"库存很少!" 或 "缺货",这取决于存储的打字机数量。

<p v-if="typewriterCount>3">
  有货
</p>

<p v-else-if="typewriterCount>0">
  库存很少!
</p>

<p v-else>
  缺货
</p>
自己试一试 »

使用函数的返回值

我们可以使用函数的 'true' 或 'false' 返回值,而不是在 v-if 指令中使用比较检查

示例

如果某个文本包含单词 'pizza',则创建一个 <p> 标签,其中包含一条合适的消息。'includes()' 方法是原生 JavaScript 方法,用于检查文本是否包含某些单词。

<div id="app">
  <p v-if="text.includes('pizza')">文本包含单词 'pizza'</p>
  <p v-else>在文本中没有找到单词 'pizza'</p>
</div>
data() {
  return {
    text: '我喜欢 taco、pizza、泰国牛肉沙拉、越南河粉和塔吉锅。'
  }
}
自己试一试 »

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

示例

如果某个文本包含单词 'pizza',则创建一个 <div> 标签,其中包含一张披萨图片和一个 <p> 标签,其中包含一条消息。'includes()' 方法是原生 JavaScript 方法,用于检查文本是否包含某些单词。

<div id="app">
  <div v-if="text.includes('pizza')">
    <p>文本包含单词“pizza”。</p>
    <img src="img_pizza.svg">
  </div>
  <p v-else>在文本中没有找到单词 'pizza'</p>
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
  const app = Vue.createApp({
    data() {
      return {
        text: '我喜欢炸玉米饼、披萨、泰国牛肉沙拉、河粉汤和塔吉锅。'
      }
    }
  })
  app.mount('#app')
</script>
自己试一试 »

下面是更详细的示例。

示例

如果一段文本包含单词“pizza”或“burrito”,或者都不包含,将生成不同的图像和文本。

<div id="app">
  <div v-if="text.includes('pizza')">
    <p>文本包含单词“pizza”。</p>
    <img src="img_pizza.svg">
  </div>
  <div v-else-if="text.includes('burrito')">
    <p>文本包含单词“burrito”,但不包含“pizza”。</p>
    <img src="img_burrito.svg">
  </div>
  <p v-else>文本中未找到单词“pizza”或“burrito”。</p>
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
  const app = Vue.createApp({
    data() {
      return {
        text: '我喜欢炸玉米饼、披萨、泰国牛肉沙拉、河粉汤和塔吉锅。'
      }
    }
  })
  app.mount('#app')
</script>
自己试一试 »

使用 Vue,我们可以用比传统 JavaScript 更轻松的方式编写代码,根据特定条件创建元素。


Vue 练习

通过练习测试自己

练习

填写缺失的部分,以便 Vue 根据布尔数据属性“lightOn”切换下方 <div> 标签的可见性。

<div id="app">
  <p ="typewritersInStock">
    in stock
  </p>
  <p >
    not in stock
  </p>
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
  data() {
    return {
      typewritersInStock: true
    }
  }
})
app.mount('#app')
</script>

开始练习


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.