vue3.0 模板语法

本文详细介绍了Vue3.0的模板语法,包括内容渲染指令如v-text、{{ }}插值表达式和v-html,双向绑定指令v-model及其修饰符,属性绑定如动态绑定多个属性、class和style,条件渲染的v-if、v-else-if、v-else与v-show,事件绑定及事件修饰符,以及列表渲染的v-for。每个指令都配以案例,帮助读者理解和应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

  • Vue 使用一种基于HTML的模板语法,使我们能够声明式地将其组件实例的数据绑定到呈现的 DOM

1. 内容渲染指令

  • 内容渲染指令用来辅助开发者渲染 DOM 元素的文本内容

1.1 v-text

使用v-text指令,将数据采用纯文本方式填充其空元素中
<script setup>

    import {
    reactive } from 'vue'

    let student = reactive({
   
        name: 'Jack',
        desc: '<h3>我是来自中国的小朋友!</h3>'
    })
    
</script>

<template>

  <!-- 使用v-text指令,将数据采用纯文本方式填充其空元素中 -->
  
  <div v-text="student.name"></div>

  <!-- v-text:以纯文本的方式显示数据 -->
  <div v-text="student.desc"></div>

  <!-- 下面的代码会报错:div 元素不是空元素 -->
  <!-- <div v-text="student.name">这是原始的div数据</div> -->
   
</template>

1.2 { { }}插值表达式

在元素中的某一位置采用纯文本的方式渲染数据
<script setup>

import {
    reactive } from 'vue'

let student = reactive({
   
    name: 'Jack',
    desc: '<h3>我是来自中国的小朋友!</h3>'
})

</script>

<template>

    <!-- 插值表达式:在元素中的某一位置采用纯文本的方式渲染数据 -->
    <div>这是一个 DIV 元素,{
   {
    student.name }}{
   {
    student.desc }}</div>

</template>

1.3 v-html

使用v-html指令,将数据采用HTML语法填充其空元素中
<script setup>

import {
    reactive } from 'vue'

let student = reactive({
   
    name: 'Jack',
    desc: '<h3>我是来自中国的小朋友!</h3>'
})


</script>

<template>

    <!-- 使用v-html指令,将数据采用HTML语法填充其空元素中 -->

    <div v-html="student.name"></div>

    <!-- v-html:以 HTML 语法显示数据 -->
    <div v-html="student.desc"></div>

    <!-- 下面的代码会报错:div 元素不是空元素 -->
    <!-- <div v-html="student.name">这是原始的div数据</div> -->

</template>

2. 双向绑定指令

2.1 v-model

v-model双向数据绑定指令,视图数据和数据源同步
一般情况下v-model指令用在表单元素中:
	1. 文本类型的<input>和<textarea>元素会绑定value属性并侦听input事件
	2. <input type="checkbox">和<input type="radio">会绑定checked属性并侦听change事件
	3. <select>会绑定value属性并侦听change事件
<script setup>

import {
    ref } from 'vue' 

let inputText = ref('ABC')  // 单行文本框
let message = ref('本次更新有以下几点:……') // 多行文本框
let open = ref(true) // 开灯(复选框)
let determine = ref('不确定') // 是否确定(复选框)
let likes = ref(['YMQ']) // 兴趣爱好(复选框)
let sex = ref('woman') // 性别(单选按钮)
let level = ref('B') //  // 证书等级(单选下拉框)
let city = ref(['苏C', '苏B']) // 去过的城市(多选下拉框)

</script>

<template>

    <!-- 单行文本框 -->
    <input type="text" v-model="inputText">

    <hr>
    <!-- 多行文本框 -->
    <textarea v-model="message"></textarea>

    <hr>
    <!-- 默认情况下,复选框的值:true/false -->
    <input type="checkbox" v-model="open"><hr>
    <!-- 自定义复选框值: true-value/false-value -->
    <input type="checkbox" true-value="确定" false-value="不确定" v-model="determine"> 是否确定

    <hr>
    <input type="checkbox" value="LQ" v-model="likes"> 篮球
    <input type="checkbox" value="ZQ" v-model="likes"> 足球
    <input type="checkbox" value="YMQ" v-model="likes"> 羽毛球
    <input type="checkbox" value="PPQ" v-model="likes"> 乒乓球

    <hr>
    <input type="radio" value="man" v-model="sex"><input type="radio" value="woman" v-model="sex"><hr>
    证书等级:
    <select v-model="level">
        <option value="C">初级</option>
        <option value="B">中级</option>
        <option value="A">高级</option>
    </select>

    <hr>
    去过的城市:
    <select multiple v-model="city">
        <option value="苏A">南京</option>
        <option value="苏B">无锡</option>
        <option value="苏C">徐州</option>
        <option value="苏D">常州</option>
    </select>

</template>

2.2 v-model的修饰符

请添加图片描述

<script setup>

import {
    ref } from 'vue' 

let age = ref(20)
let nickname = ref('')

</script>

<template>
    
    <p>将用户输入的值转成数值 .number,懒更新 .lazy</p>
    <!-- 。number 将用户输入的值转成数值,如果用户输入的内容无法转成数字,将不会更新数据源 --
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员--韩同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值