Vue指令(一)--v-html、v-show、v-if、v-else、v-else-if、v-on、v-bind、v-for、v-model

news2025/1/18 11:09:00

目录

(一)初识指令和内容渲染指令v-html

1.v-html

案例: 

官网的API文档 

(二)条件渲染指令v-show和v-if 

1. v-show

2. v-if

(三)条件渲染指令v-else和v-else-if

案例 

(四)事件绑定指令 v-on

 1.内联语句

 简写

2.事件处理函数

  3.给事件处理函数传参

(五)属性绑定指令v-bind

(六)列表渲染指令v-for

1.v-for中的key

区别:加key-不加key 

(七)双向绑定指令v-model


(一)初识指令和内容渲染指令v-html

Vue 会根据不同的 【指令】 ,针对标签实现不同的 【功能】
指令:带有 v- 前缀 的 特殊 标签属性

1.v-html

作用:设置元素的 innerHTML
语法:v-html = " 表达式 "

案例: 

<body>

    <div id="app">

        <div v-html="msg"></div>

    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>

    <script>

        const app = new Vue({

            el: '#app',

            data: {

                msg: `

                    <a href="https://www.baidu.com">

                        baidu

                    </a>

                    `

            }

        })

    </script>

</body>

 

官网的API文档 

(二)条件渲染指令v-show和v-if 

1. v-show

  1. 作用: 控制元素显示隐藏
  2. 语法: v-show = "表达式" 表达式值 true 显示false 隐藏
  3. 原理: 切换 display:none 控制显示隐藏
  4. 场景: 频繁切换显示隐藏的场景

2. v-if

  1. 作用: 控制元素显示隐藏(条件渲染
  2. 语法: v-if = "表达式" 表达式值 true 显示false 隐藏
  3. 原理: 基于条件判断,是否 创建 移除 元素节点
  4. 场景: 要么显示,要么隐藏,不频繁切换的场景

示例代码:

<html>

    <head>

        <style>

            .box {

                border: 3px solid #000000;

                border-radius: 10px;

                padding: 20px;

                margin: 20px;

                width: 200px;

            }

        </style>

    </head>

    <body>

        <div id="app">

            <div v-show="flag" class="box">我是v-show控制的盒子</div>

            <div v-if="flag" class="box">我是v-if控制的盒子</div>

        </div>

   

        <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>

   

        <script>

            const app = new Vue({

                el: '#app',

                data: {

                    flag:true,

                }

            })

        </script>

    </body>

</html>

演示截图:

当flag为true时:

当flag为false时:

1.v-show的底层原理:

切换css的diaplay: none来控制显示还是隐藏

2.v-if的底层原理:

根据判断条件来控制元素的创建和移除(当结果为true时当前元素就创建出来,为false时元素就销毁)

(三)条件渲染指令v-else和v-else-if

1. 作用: 辅助 v-if 进行判断 渲染
2. 语法: v-else v-else-if = "表达式"
3. 注意: 需要紧挨着 v-if 一起使用

案例 

 示例代码:

<html>

    <head>

        <title>

            案例

        </title>

    </head>

    <body>

        <div id="app">

            <p v-if="gender === 1">性别:♂ 男</p>

            <p v-else>性别:♀ 女</p>

            <hr>

            <p v-if="score >= 90">成绩评定A:奖励电脑一台</p>

            <p v-else-if="score >=70">成绩评定B:奖励周末郊游</p>

            <p v-else-if="score >=60">成绩评定C:奖励零食礼包</p>

            <p v-else>成绩评定D:惩罚一周不能玩手机</p>

        </div>

   

        <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>

   

        <script>

            const app = new Vue({

                el: '#app',

                data: {

                    gender:1,

                    score:80

                }

            })

        </script>

    </body>

</html>

演示截图:

(四)事件绑定指令 v-on

作用:注册时间=添加时间+提供处理逻辑

语法:

  • <button v-on:事件名="内联语句">按钮</button>

  • <button v-on:事件名="处理函数">按钮</button>

  • <button v-on:事件名="处理函数(实参)">按钮</button>

  • v-on: 简写为 @

 1.内联语句

<body>
        <div id="app">
            <button v-on:click="count--">-</button>
            <span>{{count}}</span>
            <button v-on:click="count++">+</button>
        </div>
        <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
        <script>
            const app=new Vue({
                el:'#app',
                data: {
                    count:111
                }
            })
        </script>
    </body>

页面实现:

事件名也不是非要写click,可以换成别的,比如mouseenter:

<body>
        <div id="app">
            <button v-on:mouseenter="count--">-</button>
            <span>{{count}}</span>
            <button v-on:mouseenter="count++">+</button>
        </div>
        <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
        <script>
            const app=new Vue({
                el:'#app',
                data: {
                    count:111
                }
            })
        </script>
    </body>

将鼠标移到“-”和“+”按钮,不用点击,就可实现加减

 简写

将v-on:这一整块换成@,也就是换成@click,同样可以实现

2.事件处理函数

内联语句只适用逻辑简单的语句,当逻辑代码多了的时候,就需要更换了

语法:

v-on:事件名 = "methods中的函数名"

注意:

  • 事件处理函数应该写到一个跟data同级的配置项(methods)

  • methods中的函数内部的this都指向Vue实例

案例:

 在页面设置一个按钮,能够多次切换隐藏文字

<body>
        <div id="app">
            <button @click="fun()">切换显示隐藏</button>
            <h2 v-show="isShow">嘿嘿嘿</h2>
        </div>
        <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
        <script>
            const app=new Vue({
                el:'#app',
                data: {
                    isShow:true
                },
                methods:{
                    fun(){
                        app.isShow = !app.isShow
                    }
                }
            })
        </script>
    </body>

运行结果:

把app换成this也是可以的,这样的可读性更高

  3.给事件处理函数传参

  • 如果不传递任何参数,则方法无需加小括号;methods方法中可以直接使用 e 当做事件对象

  • 如果传递了参数,则实参 $event 表示事件对象,固定用法。

语法格式:

@click="fn(参数1,参数2)"

案例:

设置一个box,提供几个按钮,模拟买果汁,设置不同的饮料不同的价格,将每个饮料的价格参数传到事件处理函数中,更改剩余的钱的余额

<head>
        <title>
            v-on指令案例
        </title>
        <style>
            .box {
              border: 3px solid #000000;
              border-radius: 10px;
              padding: 20px;
              margin: 20px;
              width: 200px;
            }
            h3 {
              margin: 10px 0 20px 0;
            }
            p {
              margin: 20px;
            }
          </style>
    </head>
    <body>
        <div id="app">
            <div class="box">
                <h2>小蔡自动售货机</h2>
            <button @click="buy(2)">可口可乐3元</button>
            <button @click="buy(4)">橙汁4元</button>
            <button @click="buy(5)">咖啡5元</button>
            </div>
            <p>银行卡余额:{{money}}元</p>
        </div>
        <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
        <script>
            const app=new Vue({
                el:'#app',
                data: {
                    money:100000
                },
                methods:{
                    buy(price){
                        this.money-=price
                    }
                }
            })
        </script>
    </body>

运行效果;

(五)属性绑定指令v-bind

  1. 作用:动态设置html的标签属性 比如:src、url、title

  2. 语法v-bind:属性名=“表达式”

  3. v-bind:可以简写成 => :

 案例:

动态绑定图片和一段文字

<div id="app">
            <img v-bind:src="url" v-bind:title="msg" alt="">
        </div>
        <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
        <script>
            const app=new Vue({
                el:'#app',
                data:{
                    url:'./img/1.png',
                    msg:'金木'
                }
            })
        </script>

运行结果:

简写

运行结果:

(六)列表渲染指令v-for

Vue 提供了 v-for 列表渲染指令,用来辅助开发者基于一个数组来循环渲染一个列表结构。

v-for 指令需要使用 (item, index) in arr 形式的特殊语法,其中:

  • item 是数组中的每一项

  • index 是每一项的索引,不需要可以省略

  • arr 是被遍历的数组

此语法也可以遍历对象和数

  1. 作用:多次渲染整个元素(数组,数字,对象),基于数据循环
  2. 遍历数组语法:v-for="(item,index) in 数组" ​​​​

 案例:

遍历一个数组并在页面上输出

<body>
        <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
        <div id="app">
            <div v-for="(item,index) in list">
                {{item}} - {{index}}
            </div>
        </div>
        <script>
            const app=new Vue({
                el:'#app',
                data:{
                    list:['菠萝','苹果','橘子','榴莲']
                }
            })
        </script>
    </body>

运行结果:

在渲染的时候我们只用到了item,那么我们是否可以省略index呢?

可以

运行结果:

1.v-for中的key

语法: key="唯一值"

作用:给列表项添加的唯一标识。便于Vue进行列表项的正确排序复用

为什么加key:Vue 的默认行为会尝试原地修改元素就地复用

 实例代码:

<ul>
  <li v-for="(item, index) in booksList" :key="item.id">
    <span>{{ item.name }}</span>
    <span>{{ item.author }}</span>
    <button @click="del(item.id)">删除</button>
  </li>
</ul>

注意:

  1. key 的值只能是字符串 或 数字类型

  2. key 的值必须具有唯一性

  3. 推荐使用 id 作为 key(唯一),不推荐使用 index 作为 key(会变化,不对应)

区别:加key-不加key 

key的作用:给元素添加唯一标识

v-for 的默认行为会尝试 原地修改元素 就地复用
       当不加key删除元素的时候,程序就会直接在前几个数据里修改,比如删除第一个,那么就会把第一个元素的文字删除了,但是其他的一些属性没有删除,然后把下面的文字提上来。

(七)双向绑定指令v-model

所谓双向绑定就是:

  1. 数据改变后,呈现的页面结果会更新

  2. 页面结果更新后,数据也会随之而变

可以快速获取或设置表单元素的内容

作用:表单元素(input、radio、select)使用,双向绑定数据,可以快速 获取设置 表单元素内容

语法:v-model="变量"

需求:使用双向绑定实现以下需求

  1. 点击登录按钮获取表单中的内容

  2. 点击重置按钮清空表单中的内容  

 代码示例:

<body>
        <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
        <div id="app">
            用户名:<input type="text" v-model="username"> <br><br>
            密码:<input type="password" v-model="password"> <br><br>
            <button @click="login">登录</button>
            <button @click="reset">重置</button>
        </div>
        <script>
            const app=new Vue({
                el:'#app',
                data:{
                    username:'',
                    password:''
                },
                methods:{
                    login(){
                        console.log(this.username,this.password)
                    },
                    reset(){
                        this.username='',
                        this.password=''
                    }
                }
            })
        </script>
    </body>

运行结果:

点击重置

点击登录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2256205.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CV工程师专用键盘开源项目硬件分析

1、前言 作为一个电子发烧友&#xff0c;你是否有遇到过这样的问题呢。当我们去查看函数定义的时候&#xff0c;需要敲击鼠标右键之后选择go to definition。更高级一些&#xff0c;我们使用键盘的快捷键来查看定义&#xff0c;这时候可以想象一下&#xff0c;你左手按下ALT&a…

源码可运行-PHP注册登录源码,PHP实现登陆后才能访问页面

最近有一个项目需要实现会员注册和页面登陆后才能访问&#xff0c;所以简单的HTML是无法实现的&#xff0c;就必须通过PHP、html和Mysql来实现&#xff0c;先给大家看一下登录和注册页的效果图。&#xff08;注册完成后会自动跳转到登录窗口&#xff0c;即使A用户登陆后分享了网…

如何本地存储中的文件路径

文章目录 1. 概念介绍2. 实现方法3. 示例代码我们在上一章回中介绍了"如何实现本地存储"相关的内容,本章回中将介绍如何实现文件存储.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在上一章回中介绍的本地存储只能存储dart语言中基本类型的数值,如果遇到…

从变更到通知:使用Python和MongoDB Change Streams实现即时事件监听

MongoDB提供了一种强大的功能&#xff0c;称为Change Streams&#xff0c;它允许应用程序监听数据库中的变更事件&#xff0c;并在数据发生变化时立即做出响应。这在mysql数据库是不具备没有这个功能的。又如&#xff1a;我们在支付环节想一直监听支付回调的状态&#xff0c;就…

Lua使用点号和冒号的区别

首先建立一个table&#xff0c;再分别定义两个方法&#xff0c;如下&#xff1a; local meta {}function meta:test1(...)print(self)print("")for k,v in pairs({...}) doprint(v)end endfunction meta.test2(...)print(self)print("")for k,v in pairs…

Metasploit使用

最近在学Metasploit&#xff0c;Metasploit是一个免费的、可下载的渗透测试框架&#xff0c;通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击&#xff0c;是一个集成了渗透测试全流程的渗透工具。 图一 模块&#xff1a;模块组织按照不同的用途分为7种类型的模块 &am…

如何“安装Android SDK“?

一、下载 https://android-sdk.en.softonic.com/ 二、解压&#xff08;不能有中文&#xff09; 三、配置环境变量 1、ANDROID_HOME&#xff1a;D:\android-sdk 2、在Path添加文件路径 四、验证 adb version

排查bug的通用思路

⭐️前言⭐️ APP点击某个按钮没有反应/PC端执行某个操作后&#xff0c;响应较慢&#xff0c;通用的问题排查方法: 从多个角度来排查问题 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f349;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评…

前端路径“@/“的使用和配置

环境&#xff1a;vitets 需要安装types/node npm install types/node --save-dev在tsconfig.json中添加 如果有tsconfig.app.json和tsconfig.node.json文件&#xff0c;则在app.json中添加 "compilerOptions": {"baseUrl":".","paths&q…

node.js中实现GETPOST请求

创建基本的服务器 const express require(express); const indexRouter require(./router); // 引入路由 const app express(); const port 3000; // 挂载路由 app.use(/api, indexRouter); app.listen(port, () > {console.log(Server is running on http://localhost…

【Python】练习【24.12.8】

题目出处 《Python程序设计基础&#xff08;第2版&#xff09;》&#xff0c;李东方等 主编&#xff0c;电子工业出版社&#xff0c;北京&#xff0c;2020.1 第 3 章&#xff1a;《Python程序的基本流程控制》 题目描述 1、编写程序&#xff0c;从键盘输入两点的坐标(x1, y…

多项式拟合之Math.NET Numerics

**多项式拟合 今日新认识的工业编程思想之传感器测温&#xff1b;热敏电阻测温如何计算通过温度计算阻值的方式&#xff1a;多项式拟合&#xff0c;通常C#中使用Math.NET Numerics Math.NET Numerics 旨在为数值计算提供方法和算法 在科学、工程和日常使用中。涵盖的主题包括…

「Mac玩转仓颉内测版46」小学奥数篇9 - 基础概率计算

本篇将通过 Python 和 Cangjie 双语实现基础概率的计算&#xff0c;帮助学生学习如何解决简单的概率问题&#xff0c;并培养逻辑推理和编程思维。 关键词 小学奥数Python Cangjie概率计算 一、题目描述 假设有一个袋子中有 5 个红球和 3 个蓝球&#xff0c;每次从袋子中随机…

hhdb数据库介绍(10-45)

安全 数据加密 加密规则列表页 仅加载当前页面配置&#xff1a;添加、删除、编辑加密规则&#xff0c;触发局部同步加载。加载成功后&#xff0c;添加配置才能生效。同样也可以执行整体同步加载&#xff08;页面右上角&#xff09;&#xff0c;来同步加密规则。 搜索&#x…

六安市第二届网络安全大赛复现

misc 听说你也喜欢俄罗斯方块&#xff1f; ppt拼接之后 缺三个角补上 flag{qfnh_wergh_wqef} 流量分析 流量包分离出来一个压缩包 出来一张图片 黑色代表0白色代表1 101010 1000 rab 反的压缩包 转一下 密码&#xff1a;拾叁拾陆叁拾贰陆拾肆 密文&#xff1a;4p4n5758…

深度学习入门课程学习笔记(第24周)

目录 摘要 Abstracts 一、何为决策树 1、决策树的组成 2、决策树的构建 二、基尼系数&#xff08; CART 算法选用的评估标准&#xff09; 三、决策树中的预剪枝处理&#xff08;正则化&#xff09; 1、限制决策树的深度 2、限制决策树中叶子结点的个数 3、限制决策树…

聊一聊常用类System

大家好&#xff0c;我是G探险者&#xff01; 今天来聊一聊java常用类System。 事情的起因是项目里面使用了Jasypt 框架对配置项进行加密&#xff0c;主要是密码相关的配置&#xff0c;项目里面的application.yml有关密码的配置项&#xff0c;使用了占位符${PASSWORD}进行了占…

在windows系统用Anaconda搭建运行PyTorch识别安全帽项目的环境

一.背景 我期望基于开源项目实现工业场景中安全帽识别。之前的各种尝试&#xff0c;也不太顺利。发现安全帽识别的开源项目使用的是基于Python的PyTorch实现训练的。上一篇写了Python的安装&#xff0c;发现后续安装其他的并不方便。我为什么选择&#xff0c;下面再详细说原因。…

Elasticsearch入门之HTTP基础操作

RESTful REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。Web 应用程序最重要的 REST 原则是&#xff0c;客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在…

Unix、GNU、BSD 风格中 ps 参数的区别

注&#xff1a;本文为“不同风格中 ps 命令参数的区别”相关文章合辑。 未去重。 BSD 风格和 UNIX 风格中 ps 参数的区别 作者&#xff1a;Daniel Stori 译者&#xff1a;LCTT Name1e5s | 2017-06-17 10:53 One Last Question ps aux 以及 ps -elf 都是查看进程的方式&…