Vue中对于指令的介绍

2023-11-11

Vue指令

1、介绍

Vue 会根据不同的【指令】,针对标签实现不同的【功能】。

指令:带有v-前缀的特殊标签属性

2、指令介绍

官网指令介绍:https://v2.cn.vuejs.org/v2/api/#%E6%8C%87%E4%BB%A4

image-20230910120444455

2.1、v-html

我们使用常规的差值表达式是无法解析网页链接的,所以我们就需要“v-html”指令来实现。

v-html可以动态的设置innerHTML属性

<body>
    <div id="app">
        <!-- {{msg}} -->
        <div v-html="msg"></div>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    <script>
        const app = new Vue({
            el: "#app",
            data: {
                msg:
                    ' <a href="https://www.baidu.com">百度</a>'
            }
        })
    </script>
</body>

2.2、v-show和v-if

  • v-show

    1. 作用:控制元素显示隐藏

    2. 语法:v-show = "表达式” 表达式值true显示,false隐藏

    3. 原理:切换display:none控制显示隐藏

    4. 场景:频繁切换显示隐藏的场景

  • v-if

    1. 作用:控制元素显示隐藏(条件渲染)

    2. 语法:v-if = “表达式” 表达式值true显示, false隐藏

    3. 原理:基于条件判断,是否创建或移除元素节点

    4. 场景:要么显示,要么隐藏,不频繁切换的场景

3.2、v-else 和 v-else-if

  1. 作用:辅助v-if 进行判断渲染

  2. 语法: v-elsev-else-if = “表达式”

  3. 注意:需要紧挨着v-if 一起使用

<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.14/dist/vue.js"></script>
    <script>
        const app = new Vue({
            el: "#app",
            data: {
                gender: 2,
                score: 80
            }
        })
    </script>>
</body>

3.3、v-on

  1. 作用:注册事件=添加监听+提供处理逻辑

  2. 语法:

    1. v-on:事件名=“内联语句”
    2. v-on:事件名= “methods中的函数名”

可以使用’@‘来代替’v-on:‘

内联语句:

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

method方式:

    <div id="app">
        <button v-on:click="count--">-</button>
        <span>{{count}}</span>
        <button v-on:click="count++"> +</button>
        <button @click="fun">函数处理+</button>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    <script>
        const app = new Vue({
            el: "#app",
            data: {
                count: 100
            },
            methods: {
                fun() {
                    app.count++;
                    this.count++;
                }
            }
        })
    </script>

在methods中访问data中的数据,需要用过app来引用,但是以防变量名的更改,所以可以通过使用this来指向当前的实例来获取data中的对象。

函数传参调用:

    <div id="app">
        <div class="box">
            <h3>小黑自动售货机</h3>
            <button @click="buy(5)">可乐5元</button>
            <button @click="buy(10)">咖啡10元</button>
        </div>
        <p>银行卡余额:{{ money }}元</p>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    <script>
        const app = new Vue({
            el: "#app",
            data: {
                money: 100
            },
            methods: {
                buy(price) {
                    this.money -= price;
                }
            }

        })
    </script>

3.4、v-bind

  1. 作用:动态的设置html的标签属性→src url title …

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

  3. “v-bind:“的简写:”:”

    <div id="app">
        <img v-bind:src="img" v-bind:title="msg">
        <img :src="img" :title="msg">
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    <script>
        const app = new Vue({
            el: '#app',
            data: {
                img: 'https://gitee.com/mannor/resouces/raw/master/PicGo/image-20230807220043572.png',
                msg: '在linux中拉取代码'
            }
        })
    </script>

3.5、v-for

  1. 作用:基于数据循环,多次渲染整个元素→数组、对象、数字…

  2. 遍历数组语法:
    v-for = “(item, index) in 数组名”

item:代指的是数组的内容;index:是指当前遍历的数组的下标。甚至不使用index的时候index还可以省略。

 <div id="app">
        <h3>mannor水果店</h3>
        <ul>
            <li v-for="(item,index) in list ">{{list[index]}}</li>
        </ul>
   		<ul>
            <li v-for="item in list ">{{item}}</li>
        </ul>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    <script>
        const app = new Vue({
            el: "#app",
            data: {
                list: ["西瓜", "芒果", "香蕉", "鸭梨", "西红柿"]
            }
        })
    </script>

3.6、v-for 中的key

  • 语法:key属性=“唯一标识”

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

    v-for的默认行为会尝试原地修改元素(就地复用:元素被更改了,但是填充元素的容器并没有被删除)。

  • 注意点:

    1. key的值只能是字符串或数字类型
    2. key的值必须具有唯一性
    3. 推荐使用id 作为 key (唯一),不推荐使用index作为key(会变化,不对应)

3.7、v-model

  1. 作用:给表单元素使用,双向数据绑定可以快速获取设置表单元素内容

    • 数据变化→视图自动更新
    • 视图变化→数据自动更新
  2. 语法:v-model = ‘变量’

 <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 src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    <script>
        const app = new Vue({
            el: '#app',
            data: {
                username: '',
                password: ''
            },
            methods: {
                login() {
                    console.log(this.username, this.password);
                },
                reset() {
                    this.username = '';
                    this.password = '';
                }
            }
        })
    </script>

3、指令修饰符

通过".”指明一些指令后缀,不同后缀封装了不同的处理操作,其作用是简化代码

3.1、 按键修饰符

  • @keyup.enter→键盘回车
<body>
    <div id="app">
        <input type="text" @keyup.enter="fun"> </input>>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    <script>
        const app = new Vue({
            el: '#app',
            data: {},
            methods: {
                fun() {
                    console.log("输入框以回车框的形式提交");
                }
            }
        });
    </script>
</body>

3.2、 监听v-model修饰符·

  • v-model.trim→去除首尾空格
  • v-model.number →将输入框中的数字字符转为数字
<body>
    <div id="app">
        姓名:<input type="text" v-model.trim="text"></input>
        年龄:<input type="text" v-model.number="text"></input>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    <script>
        const app = new Vue({
            el: '#app',
            data: {
                text: 0,
            },
        });
    </script>
</body>

3.3、 事件修饰符

  • @事件名.stop→阻止冒泡

  • @事件名.prevent →阻止默认行为(阻止链接的跳转)

<!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>
    <style>
        .father {
            width: 200px;
            height: 200px;
            background-color: pink;
            margin-top: 20px;
        }
        .son {
            width: 100px;
            height: 100px;
            background-color: skyblue;
        }
    </style>
</head>
<body>
    <div id="app">
        <h3>@事件名.stop → 阻止冒泡</h3>
        <div @click="fatherFn" class="father">
            <div @click.stop="sonFn" class="son">儿子</div>
        </div>
        <h3>@事件名.prevent → 阻止默认行为</h3>
        <a @click.prevent href="http://www.baidu.com">阻止默认行为</a>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    <script>
        const app = new Vue({
            el: '#app',
            data: {
                username: '',
                age: '',
            },
            methods: {
                fatherFn() {
                    alert('老父亲被点击了')
                },
                sonFn() {
                    alert('儿子被点击了')
                }
            }
        })
    </script>
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue中对于指令的介绍 的相关文章

  • 主干视图 DOM 元素已删除

    我一直在阅读有关 Backbone js 僵尸 或内存泄漏 问题的信息 基本上 当您不再需要该元素时 您必须从 DOM 中解除绑定并删除该元素 以确保所有事件也被删除 现在 我有一个包含几个容器的单页应用程序 div div div div
  • 尝试将布尔 C# 变量传递给 javascript 变量并将其设置为 true

    在我的 aspx 页面中 我将布尔变量 C 传递给需要布尔类型的 javascript 函数 但遇到了问题 但是 C 变量返回 True 而 javascript 不喜欢大写 myjavascript 如果我将 c 变量转换为字符串 那么我
  • jquery.find() 可以只选择直接子项吗?

    我应该向 jQuery find 提供什么参数来选择元素子元素而不选择其他元素 我不能用 gt 引导选择器 而用 将选择所有后代 而不仅仅是直接子代 我知道 jQuery children 但这是一个库 因此用户能够提供自己的选择器 并且我
  • TypeError: props.render 不是一个函数(React hook 形式)

    我将方法作为我用react hook form制作的形式的道具传递 当从react hook form添加控制器时 它给了我 TypeError props render不是一个函数 我在网上找不到任何解决方案 因此感谢任何帮助 impor
  • 使用 useReducers 调度函数发送多个操作?

    使用时是否可以通过调度函数发送多个动作useReducer挂钩反应 我尝试向它传递一组操作 但这会引发未处理的运行时异常 明确地说 通常会有一个初始状态对象和一个减速器 如下所示 const initialState message1 nu
  • 使用模数按字母顺序对列表进行排序

    我在获取元素列表并按字母顺序对它们进行排序方面没有任何问题 但我很难理解如何使用模数来做到这一点 更新 这是按我的方式工作的代码 但是 我更喜欢下面提供的答案的可重用性 因此接受了该答案
  • Meteor:应用程序无法在 0.9.1.1 版本上运行

    出现类似错误 Error TypeError undefined is not a function evaluating Template create anonymous function iron dynamic template j
  • 使用 Angular 下载具有动态 src 的脚本

    Angular 提供了通过动态名称动态加载模板的方法ng include 该部分中的内联 JS 和 CSS 可以正常加载 但没有一个好的方法来下载带有动态 url 的脚本 我们需要下载脚本 相对于调用它们的 html 部分的路径 即我们有一
  • Google App Engine:修改云运行环境

    我正在尝试部署一个使用自定义 Node js 服务器的 Next js 应用程序 我想将自定义构建变量注入应用程序 next config js const NODE ENV process env NODE ENV const envTy
  • 如何获取 vuejs 组件单元测试中定义的“this”变量

    我正在尝试在 npm 脚本中使用 mocha webpack 来测试 vuejs 组件 我在测试中像这样嘲笑 vuex 商店 const vm new Vue template div div
  • 如何使输入字段和提交按钮变灰

    我想变灰这两件事 http doorsplit heroku com 歌曲输入字段和提交按钮 直到用户输入艺术家 有没有一种简单的方法可以通过 JQuery 来做到这一点 艺术家输入字段的id是 request artist 你可以这样做
  • 提交表单并重定向页面

    我在 SO 上看到了很多与此相关的其他问题 但没有一个对我有用 我正在尝试提交POST表单 然后将用户重定向到另一个页面 但我无法同时实现这两种情况 我可以获取重定向或帖子 但不能同时获取两者 这是我现在所拥有的
  • 如何获取给定 DOM 元素的所有定义的 CSS 选择器?

    如何使用 jQuery 获取给定 DOM 元素的所有定义的 CSS 选择器 定义后 我的意思是在应用于任何样式表的所有 CSS 选择器document 在某种程度上 这类似于 FireBug 实现的功能 其中显示所选 DOM 元素的所有应用
  • 在 vue.js 中访问数组对象属性

    给定以下数组vue js packageMaps Object packageMap 0 Object Id 16 PackageType flag list ProductCode F BannerBase packageMap 1 Ob
  • Javascript 纪元时间(以天为单位)

    我需要以天为单位的纪元时间 迄今为止 我已经看到过有关如何翻译它的帖子 但几天后就没有了 我对纪元时间很不好 我怎么能得到这个 我需要以天为单位的纪元时间 我将解释为您想要自纪元以来的天数 纪元本身是第 0 天 或第 1 天的开始 无论您如
  • 如何更改此 jquery 插件的时区/时间戳?

    我正在使用这个名为 timeago 的插件 在这里找到 timeago yarp com 它工作得很好 只是它在似乎不同的时区运行 我住在美国东部 费城时区 当我将准确的 EST 时间放入 timeago 插件时 比如 2011 05 28
  • 简单的 Vue.js 计算属性说明

    我对 Vue js 并不陌生 但我会再次浏览文档 试图找出我第一次错过的任何内容 我在以下地方看到了这个声明使用计算属性的基本示例部分 https v2 vuejs org v2 guide computed html Basic Exam
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交
  • 使用 Ajax 请求作为源数据的 Jquery 自动完成搜索

    我想做的事 我想使用 jquery 自动完成函数创建一个输入文本字段 该函数从跨域curl 请求获取源数据 结果应该与此示例完全相同 CSS 在这里并不重要 http abload de img jquerydblf5 png http a
  • 导致回发到与弹出窗口不同的页面

    我有一个主页和一个详细信息页面 详细信息页面是从主页调用的 JavaScript 弹出窗口 当单击详细信息页面上的 保存 按钮时 我希望主页 刷新 是否有一种方法可以调用主页的回发 同时还可以从详细信息页面维护保存回发 Edit 使用win

随机推荐

  • MySQL--Group by分组与count计数(进阶)

    MySQL Group by分组与count计数 进阶 1 Group by语法 2 创建表格 3 题目代码部分 4 文末彩蛋 开心一刻 更多关于数据库知识请加关注哟 若需联系和想安装MySQL请加博主 QQ 3327908431 微信 Z
  • 具有对称性质的单参数混沌镜像系统的切换控制

    近年来 混沌已经应用到许多工程领域 例如 信息科学 复杂神经网络 信号处理 通信保密等 因此 许多学者一直探索新的混沌动力学 一些简单的光滑三维二次连续自治系统能生成混沌 1994年 Sportt提出了19个简单的混沌系统 每个系统仅有5项
  • 写一段ocr文字识别的具体实现代码

    OCR文字识别的具体实现代码如下 import cv2 读取图片 img cv2 imread example png 将图片转换为灰度图 gray cv2 cvtColor img cv2 COLOR BGR2GRAY 用Threshol
  • 串——顺序结构

    include
  • Unleashing the Power of Graph Learning through LLM-based Autonomous Agents

    本文是LLM系列文章 针对 Unleashing the Power of Graph Learning through LLM based Autonomous Agents 的翻译 通过基于LLM的自动Agent释放图学习的力量 摘要
  • mysql.的常用命令

    常用功能命令 1 导出整个数据库 1mysqldump u 用户名 p default character set latin1 数据库名 导出的文件名 数据库默认编码是latin1 23mysqldump u wcnc p smgp ap
  • LeetCode题目笔记——1566. 重复至少 K 次且长度为 M 的模式

    文章目录 题目描述 题目难度 简单 方法一 模拟 代码 C 总结 题目描述 给你一个正整数数组 arr 请你找出一个长度为 m 且在数组中至少重复 k 次的模式 模式 是由一个或多个值组成的子数组 连续的子序列 连续 重复多次但 不重叠 模
  • 数据结构学习——链表(C语言版)

    数据结构学习 链表的简单解析 一 何为链表 1 概念 2 特点 二 链表的简单实现 1 头插法 2 尾插法 3 模拟学生管理系统 一 何为链表 1 概念 链表 Linked list 是一种常见的基础数据结构 是一种线性表 但是并不会按线性
  • 公司新招了几个00后,我愿称之为卷王之王

    前几天我们公司一下子也来了几个新人 这些年轻人是真能熬啊 本来我们几个老油子都是每天稍微加会班就打算走了 这几个新人一直不走 搞得我们也不好走 2023年秋招就要开始了 最近内卷严重 各种跳槽裁员 相信很多小伙伴也在准备今年的金九银十的面试
  • java spring boot 判断用户、客户端是移动端,还是pc端

    一 设计流程 一 创建一个API 用这个API的地址 生成二维码图片 这个图片给用户扫的 二 创建二维码链接信息 例 安卓跳转到baidu com ios跳转到taobao com 三 后端系统在用户扫描后 判断用户系统 并跳转到相应地址
  • Python实现删除某列中含有空值的行

    客户需求 查看销售人员不为空值的行 数据存储情况如图 代码实现 import pandas as pd data pd read excel test xlsx sheet name Sheet1 datanota data data 销售
  • TensorFlow:常用函数介绍

    学习网址 Tensorflow中文社区 http www tensorfly cn 一 tensorflow框架笔记 1 Variable 一个Variable代表一个可修改的张量 存在在TensorFlow的用于描述交互性操作的图中 它们
  • C程序头文件注释格式

    Copyright C 2010 2011 Your Company FileName 文件名 Author 作者 Version 版本 Date 完成日期 Description 用于主要说明此程序文件完成的主要功能 与其他模块或函数的接
  • 蓝牙设备上电提示Failed to set power on: org.bluez.Error.Blocked

    NEW Controller 74 2F 68 6A 37 44 moon 0 default NEW Device 00 07 61 76 8E 78 Logitech diNovo Edge Agent registered bluet
  • 03. 微信公众号消息接收、事件推送与响应处理

    1 消息接收 官方文档 当普通微信用户向公众账号发消息时 微信服务器将POST消息的XML数据包到开发者填写的URL上 gt 接口配置信息的URL 即开发时 接收信息的接口的访问路径与微信接入的URL一致 但为 POST 请求 请求参数 依
  • 计算机毕业设计Java的工资管理系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java的工资管理系统 源码 系统 mysql数据库 lw文档 计算机毕业设计Java的工资管理系统 源码 系统 mysql数据库 lw文档 本源码技术栈 项目架构 B S架构 开发语言 Java语言 开发软件 idea ec
  • QA 如何打造自身的核心竞争力?

    转载自微服务质量保障 20 讲嘉木老师 怎样理解 核心竞争力 在讲解竞争力之前先看下什么是能力 能力是指一个人完成一个目标或者任务所体现出来的素质 如技能 知识 经验以及行为等 解释中暗含了 能力是一个绝对值 正数 的意思 显得比较学术 而
  • 360度全景标定方法_一种360度全视角鸟瞰全景行车辅助标定方法与流程

    技术领域本发明涉及辅助驾驶领域 具体地说是一种360度全视角鸟瞰全景行车辅助标定方法 背景技术 随着图像和计算机视觉技术的快速发展 越来越多的技术被应用到汽车电子领域 传统的基于图像倒车影像系统在车尾安装摄像头 只能覆盖车尾周围有限的区域
  • 【Vue3源码】第四章 实现isReadonly和isReactive

    Vue3源码 第四章 实现isReadonly和isReactive 前言 上一章节我们实现readonly API 并且优化之前写的reactive API 这一章我们实现isReadonly和isReactive两个API 1 实现is
  • Vue中对于指令的介绍

    Vue指令 文章目录 Vue指令 1 介绍 2 指令介绍 2 1 v html 2 2 v show和v if 3 2 v else 和 v else if 3 3 v on 3 4 v bind 3 5 v for 3 6 v for 中