我的编程空间,编程开发者的网络收藏夹
学习永远不晚

八个Vue中常用的v指令详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

八个Vue中常用的v指令详解

Vue中常用的8种v指令

根据官网的介绍,指令 是带有 v- 前缀的特殊属性。通过指令来操作DOM元素

指令功能
v-text=“变量/表达式”文本的设置
字符串变量+数字可以直接写是拼接
字符串如果出现要使用外部不相同的引号
v-html=“变量”文本或者页面的设置
如果变量只是普通文本,作用和 v-text 相同
如果变量是一个完整的标签字符串,则会解析成为html
v-on:click=“方法名”
@click=“方法名”
绑定方法
可以是无参方法,也可以是有参方法
v-show=“布尔值变量”标签的显示和隐藏
根据布尔值变量的真与假,将标签显示或隐藏
v-if=“布尔值变量”标签的创建与销毁
效果与 v-show 相同,但是频繁操作性能开销很大
v-for="item,index in arr"
v-for=“item in arr”
数组的循环遍历
将数组中的数据,索引进行遍历
v-bind:标签属性=“属性值”
:标签属性=“属性值”
标签属性的绑定
可以直接修改标签中的属性值
v-model=“变量值”数据双向绑定
变量值的修改会影响页面显示,页面变化也会影响变量值

1 v-text 指令

作用:

  • 获取data数据, 设置标签的内容,以纯文本进行显示
  • v-text 会覆盖 标签中的内容,如果想要拼接数据,可以直接在v-text中拼接
    • 如果拼接的是数字:直接使用 “+”
    • 如果拼接的是字符串,需要使用与外部不同的引号进行包裹内容

注意: 默认写法会替换全部内容,使用插值表达式{{}}可以替换指定内容.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script class="lazy" data-src="js/vue.min.js"></script>
</head>
<body>
    <div id="app">
        <!-- 第一种.获取 vue 中定义的数据,会将插值表达式的内容与标签中的内容进行拼接 -->
        <h2>{{msg}}-云梦归遥</h2>
        <!-- 第二种.获取 vue 中定义的数据,设置标签中的内容,而且会覆盖标签中的内容 -->
        <h2 v-text="msg">-云梦归遥</h2>
        <h2 v-text="msg+21"></h2> <!-- v-text 拼接数字可以直接相加 -->
        <h2 v-text="msg+'-云梦归遥'"></h2> <!-- v-text 拼接字符串需要用不同于外部的单引号或双引号 -->
    </div>
</body>
<script>
    var VM = new Vue({
        el: "#app",
        data: {
            msg: "Java 程序员",
        },
    });
</script>
</html>

2 v-html 指令

作用:

可以当做 v-text 一样使用,显示普通文本

设置元素的 innerHTML (可以向元素中写入新的标签)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script class="lazy" data-src="js/vue.min.js"></script>
</head>
<body>
    <div id="app">
        <!-- 1.获取普通文本的三种方式 -->
        <h2>{{msg}}</h2>
        <h2 v-text="msg"></h2>
        <h2 v-html="msg"></h2>
        <hr>
        <!-- 2.v-html 不仅可以当做 v-text 使用,更重要的是可以设置元素的 innerHTML -->
        <h2 v-text="url"></h2> <!-- v-text 直接以文本形式进行显示 -->
        <h2 v-html="url"></h2> <!-- v-html 将会以定义的标签的形式进行显示 -->
    </div>
</body>
<script>
    var VM = new Vue({
        el: "#app",
        data: {
            msg: "Java程序员",
            url: "<a href='https://www.baidu.com'>百度一下</a>"
        },
    });
</script>
</html>

3 v-on 指令

作用: 为元素绑定事件, 比如: v-on:click,可以简写为 @click="方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script class="lazy" data-src="js/vue.min.js"></script>
</head>
<body>
    <div id="app">
        <!-- 1.单击事件 -->
        <!-- 标准书写的方式 v-on:click="方法名" -->
        <input type="button" value="调用v-on指令-单击事件-标准书写" v-on:click="show"><br>
        <!-- 简写的方式: @click="方法名" -->
        <input type="button" value="调用v-on指令-单击事件-简写的方式" @click="show"><br>
        <!-- 2.双击事件 -->
        <input type="button" value="双击事件" @dblclick="show"><br>
        <hr>
        <!-- 绑定点击事件,修改标签内容 -->
        <h2 @click="changeName">{{msg}}</h2>
        <h2 v-text="msg" @click="changeName"></h2>
        <h2 v-html="msg" @click="changeName"></h2>
    </div>
</body>
<script>
    var VM = new Vue({
        el: "#app",
        data: {
            msg: "Java程序员"
        },
        // 通过 methods 来定义 v-on 中调用的方法
        methods: {
            show:function(){
                alert("v-on 指令对应的方法被调用");
            },
            changeName:function(){
                // 使用 this 获取 data 中的数据
                this.msg += "-云梦归遥";
            },
        },
    });
</script>
</html>

案例:计数器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script class="lazy" data-src="js/vue.min.js"></script>
    <!-- <link href="css/inputNum.css" rel="external nofollow"  rel="stylesheet"> -->
</head>
<body>
    <div id="app">
        <!-- 计算功能区域 -->
        <div>
            <input type="button" @click="addNum" value="+">
            <span>{{num}}</span>
            <input type="button" v-on:click="minusNum" value="-">
        </div>
        <p>{{result}}</p>
    </div>
</body>
<script>
    var VM = new Vue({
        el: "#app",
        data: {
            num: 0,
            result: "当前数值是[ 0 ], 还未执行操作"
        },
        methods: {
            addNum: function(){
                this.num += 1;
                this.result = "当前数值是[ " + this.num + " ], 执行 +1 操作";
            },
            minusNum: function(){
                this.num -= 1;
                this.result = "当前数值是[ " + this.num + " ], 执行 -1 操作";
            },
        },
    });
</script>
</html>

4 v-show 指令

作用: v-show 需要一个 boolean 类型的值,根据值的变化,进行标签的显示和隐藏

原理:修改 style 的display为 block 或 none,进行显示和隐藏

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script class="lazy" data-src="js/vue.min.js"></script>
</head>
<body>
    <div id="app">
        <input type="button" value="图片显示/隐藏切换" @click="show"><br>
        <!-- v-show 需要一个 boolean 类型的值,根据值的变化,进行标签的显示和隐藏 -->
        <img class="lazy" data-src="img/logo.jpg" v-show="flag" style="width: 300px; height: 300px;">
        <!-- 还可以通过表达式的结果 来进行显示和隐藏 -->
        <img class="lazy" data-src="img/logo.jpg" v-show="num > 18" style="width: 300px; height: 300px;">
    </div>
</body>
<script>
    var VM = new Vue({
        el: "#app",
        data: {
            flag: true, // 作为是否显示图片的判定值
            num: 21
        },
        methods: {
            show:function(){
                this.flag = !this.flag;
            },
        },
    });
</script>
</html>

5 v-if 指令

作用: 根据表达值的真假,切换元素的显示和隐藏( 操纵dom 元素 )

原理:会操作 DOM 元素,将元素删除或添加,而不是像 v-show 一样修改样式

使用场景:频繁切换使用 v-show,反之使用 v-if

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script class="lazy" data-src="js/vue.min.js"></script>
</head>
<body>
    <div id="app">
        <input type="button" value="v-if切换图片显示/隐藏" @click="show"><br>
        <!-- v-if 根据表达式的真假判断显示 或 隐藏 -->
        <img class="lazy" data-src="img/logo.jpg" style="width: 300px; height: 300px;" v-if="isShow">
    </div>
</body>
<script>
    var VM = new Vue({
        el: "#app",
        data:{
            isShow: false,
        },
        methods: {
            show: function(){
                this.isShow = !this.isShow;
            },
        },
    });
</script>
</html>

6 v-bind 指令

作用: 设置元素的属性 (比如:class="lazy" data-src,title,class,style传递json串)

一次只能修改一个属性

  • v-bind:属性名=“属性值”
  • :属性名
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script class="lazy" data-src="js/vue.min.js"></script>
</head>
<body>
    <div id="app">
        <!-- 这是原图片 -->
        <img class="lazy" data-src="img/logo.jpg" style="width: 300px;height: 300px;" alt="图片加载失败">
        <!-- v-bind:class="lazy" data-src 设置了一个 图片的 属性 -->
        <img v-bind:class="lazy" data-src="img1" style="width: 450px; height: 300px;" alt="图片加载失败">
        <!-- v-bind:title 设置了一个图片的 标题 ,使用 v-bind修改属性都可以简写为 :属性名-->
        <img v-bind:class="lazy" data-src="img2" style="width: 450px;height: 300px;" :title="img2_title" alt="图片加载失败">
        <!-- v-bind 设置 class -->
        <div style="width: 300px; height: 300px; background: green;" :style="{width: size + 'px'}"></div>
    </div>
</body>
<script>
    var VM = new Vue({
        el: "#app",
        data: {
            img1: "img/4.png",
            img2: "img/3.png",
            img2_title: "斗罗大陆-火舞",
            size: 200,
        },
        methods: {
            
        },
    });
</script>
</html>

7 v-for 指令

作用: 根据数据生成列表结构,常与数组一起使用,进行遍历操作

  • v-for="item,index in arr1"
  • v-for="person in persons"

相关方法:

  • push():将元素追加进入数组
  • shift():将数组的起始元素删除

数组的长度变化,会同步更新到页面上,是响应式的

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script class="lazy" data-src="js/vue.min.js"></script>
</head>
<body>
    <div id="app">
        <ul>
            <!-- v-for:在 li 标签中进行获取数组元素,进行展示 -->
            <!-- item: 循环得到的元素;index:获取元素在数组中的下标 -->
            <li v-for="item,index in arr1">
                第{{index + 1}}个同学: {{item}}
            </li>
        </ul>
        <hr>
        <input type="button" value="添加数据" @click="addData">
        <input type="button" value="移除数据" @click="removeData">
        <!-- v-for 遍历,展示数据 -->
        <h2 v-for="person in persons">
            我是 {{person.name}}, 我今年 {{person.age}} 岁.
        </h2>
    </div>
</body>
<script>
    var VM = new Vue({
        el: "#app",
        data: {
            // 数组
            arr1: ["Mike", "John", "Jack"],
            // 对象数组
            persons: [
                {name: "Mike", age: 21},
                {name: "John", age: 22},
                {name: "Jack", age: 23},
            ],
        },
        methods: {
            addData: function(){
                // 向数组中添加元素
                this.persons.push({name: "Peter", age: 24});
            },
            removeData: function(){
                // 移除数组中的元素,会移除第一个元素
                this.persons.shift();
            },
        },
    });
</script>
</html>

8 v-on 补充

作用:

  • 可以向函数传递参数
  • 事件修饰符,可以制定哪些方式触发事件,比如说按键,回车等
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script class="lazy" data-src="js/vue.min.js"></script>
</head>
<body>
    <div id="app">
        <!-- v-on:绑定函数,可以进行传参 -->
        <input type="button" value="礼物刷起来" @click="show(3, '穿云箭')"><br>
        <span style="color: green;">向主播狂刷{{num}}个</span>
        <span style="color: red;">{{gift}}</span>
        <hr>
        <!-- v-on:事件修饰符 指定哪些方式触发事件,比如说 按键,回车等等 -->
        <input type="text" @keyup="up" placeholder="一输入内容就会弹窗"><br>
        <input type="text" @keyup.enter="up" placeholder="输入回车才会弹窗"><br>
    </div>
</body>
<script>
    var VM = new Vue({
        el: "#app",
        data: {
            num: 1,
            gift: "一个鱼丸",
        },
        methods: {
            show:function(p1, p2){
                this.num = p1;
                this.gift = p2;
            },
            up:function(){
                alert("hello world");
            },
        },
    });
</script>
</html>

总结

到此这篇关于八个Vue中常用的v指令详解的文章就介绍到这了,更多相关Vue常用v指令内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

八个Vue中常用的v指令详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Vue中列表渲染指令v-for的基本用法详解

v-for指令是在模板编译的代码生成阶段实现的,当遍历数组或对象时需要使用列表渲染指令v-for。本文主要为大家介绍了v-for指令的基本用法,希望对大家有所帮助
2023-05-17

vue指令中的v-once怎么使用

本篇内容主要讲解“vue指令中的v-once怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue指令中的v-once怎么使用”吧!v-once在日常开发中用的很多只渲染元素和组件一次,随
2023-06-30

vue中的v-show,v-if,v-bind的使用示例详解

这篇文章主要介绍了vue中的v-show,v-if,v-bind的使用,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-05-14

Vue中的常用指令有哪些

这篇文章主要介绍了Vue中的常用指令有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue中的常用指令有哪些文章都会有所收获,下面我们一起来看看吧。首先来聊聊Vue框架,Vue是一套用于构建用户界面的渐进式
2023-06-26

Vue中的Mustache插值语法、v-bind指令怎么使用

本篇内容介绍了“Vue中的Mustache插值语法、v-bind指令怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Mustach
2023-07-04

Vue中自定义指令的三个常用方法小结

本文介绍了Vue.js中自定义指令的三个常用方法:bind()方法:在指令绑定时执行一次性设置,如绑定事件监听器。update()方法:在指令值更改后更新元素状态,如改变元素文本内容。unbind()方法:在指令解绑时清理指令设置,如移除事件监听器。使用自定义指令可实现以下好处:重用性、代码简洁性、可扩展性、灵活性和扩展Vue的核心功能。
Vue中自定义指令的三个常用方法小结
2024-04-02

Vue中常用的内置指令是什么

这篇文章将为大家详细讲解有关Vue中常用的内置指令是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

好好学习

2023-06-25

编程热搜

目录