菜单
×
   ❮   
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 教程

Vue 首页 Vue Intro Vue Directives Vue v-bind Vue v-if Vue v-show Vue v-for Vue Events Vue v-on Vue Methods Vue Event Modifiers Vue Forms Vue v-model Vue CSS Binding Vue Computed Properties Vue Watchers Vue Templates

Scaling Up

Vue Why, How and Setup Vue First SFC Page Vue Components Vue Props Vue v-for Components Vue $emit() Vue Fallthrough Attributes Vue Scoped Styling Vue Local Components Vue Slots Vue v-slot Vue Scoped Slots Vue Dynamic Components Vue Teleport Vue HTTP Request Vue Template Refs Vue Lifecycle Hooks Vue Provide/Inject Vue Routing Vue Form Inputs Vue Animations Vue Animations with v-for Vue Build Vue Composition API

Vue Reference

Vue Built-in Attributes Vue Built-in Components Vue Built-in Elements Vue Component Instance Vue Directives Vue Instance Options Vue Lifecycle Hooks

Vue 示例

Vue Examples Vue Exercises Vue Quiz Vue Server Vue Certificate

Vue v-if 指令

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

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

Vue 中的条件渲染

条件渲染在 Vue 中是通过使用 v-ifv-else-ifv-else 指令来实现的。

条件渲染是指仅当条件为真时才创建 HTML 元素,例如,如果变量为“true”,则创建文本“有货”,如果该变量为“false”,则创建“无货”。

示例

根据是否有打字机在库存中,显示不同的消息

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

<p v-else>
  无货
</p>
自己动手试一试 »

Vue 中的条件

条件,或称“if 语句”,是指那些为 truefalse 的内容。

条件通常是两个值之间的比较检查,就像上面的例子一样,用于检查一个值是否大于另一个值。

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

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

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

我们可以使用库存中的打字机数量,通过比较检查来决定是否有货

示例

使用比较检查来决定是显示“有货”还是“无货”,这取决于库存中的打字机数量。

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

<p v-else>
  无货
</p>
自己动手试一试 »

条件渲染指令

本概述描述了用于条件渲染的不同 Vue 指令是如何协同工作的。

指令 详情
v-if 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>
自己动手试一试 »

使用函数的返回值

除了使用 v-if 指令进行比较检查外,我们还可以使用函数返回的“true”或“false”值

示例

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

<div id="app">
  <p v-if="text.includes('pizza')">文本包含“pizza”一词</p>
  <p v-else>文本中未找到“pizza”一词</p>
</div>
data() {
  return {
    text: 'I like taco, pizza, Thai beef salad, pho soup and tagine.'
  }
}
自己动手试一试 »

上面的示例可以扩展,以显示 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: 'I like taco, pizza, Thai beef salad, pho soup and tagine.'
      }
    }
  })
  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: 'I like taco, pizza, Thai beef salad, pho soup and tagine.'
      }
    }
  })
  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>

开始练习


×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持