Vue <template> 元素
实例
使用内置的 <template>
元素使用 v-if
指令切换 HTML 代码的一部分。
<ul>
<li>Trolltunga</li>
<template v-if="display">
<li>Potato Point</li>
<li>The souks of Marrakech</li>
<li>Dry Tortugas</li>
<li>Halong Bay</li>
</template>
<li>...</li>
</ul>
定义与用法
当与 Vue 指令 v-if
, v-else-if
, v-else
, v-for
, 或 v-slot
一起使用时,HTML <template>
标记将成为内置的 Vue <template>
元素。
当与 v-if
, v-else-if
, v-else
, 或 v-for
一起使用时,内置的 <template>
元素会呈现 HTML 代码的一部分。
当与 v-slot
一起使用时,内置的 <template>
元素将 HTML 代码的一部分引导到指定的 slot。参见下面的实例1。
内置的 <template>
元素本身不会呈现为 DOM 元素。
注意:当使用 SFC(*.vue)文件时,顶级
<template>
元素是一个结构要求。对于此类顶级 <template>
元素,不能使用 Vue 指令。更多实例
实例 1
使用内置的 <template>
元素封装多个元素,并使用 v-slot
指令将它们发送到特定的命名 slot。
<template>
<h1>App.vue</h1>
<p>The component has two div tags with one slot in each.</p>
<slot-comp>
<template v-slot:bottomSlot>
<h4>To the bottom slot!</h4>
<p>This p tag and the h4 tag above are directed to the bottom slot with the v-slot directive used on the template tag.</p>
</template>
<p>This goes into the default slot</p>
</slot-comp>
</template>
实例 2
使用 <template>
元素,可以使用 v-if
指令呈现多个元素。
<div id="app">
<template v-if="text.includes('pizza')">
<p>The text includes the word 'pizza'</p>
<img src="img_pizza.svg">
</template>
<p v-else>The word 'pizza' is not found in the text</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>