前端小白的学习之路(Vue2 二)

提示:学习vue2的第二天,笔记记录:自定义指令,事件修饰符,属性计算,属性监听,属性过滤

目录

一、自定义指令

1.全局注册

2.局部注册

二、事件修饰符 

1.常用事件修饰符

1)事件相关修饰符

2)键盘事件相关修饰符

3)鼠标事件相关修饰符

三、属性计算

四、属性监听

五、属性过滤


一、自定义指令

在 Vue 中,你可以通过自定义指令来扩展 HTML 元素的行为。

1.全局注册

directive:全局注册通过Vue下的一个方法directive来自定义指令,全局注册的指令可以在任何 Vue 实例的模板中使用

<!DOCTYPE html>
<html lang="zh-cn"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Vue</title>
</head><body><div id="app"><!-- 定义一个改变字体颜色的指令--><h2 v-color="`purple`">你好,世界</h2></div><script src="./libs/vue.js"></script><script>// 当文档上指令满足不了我们的需求,可以选择自定义指令// 1) 注册全局指令Vue.directive('color', {// 当被绑定的元素插入到 DOM 中时改变字体颜色//el:被绑定的元素,option:接受的参数,是一个对象inserted: function (el,option) {if(typeof el === 'object'){el.style.color = option.value;}}})//禁止控制台输出日志信息Vue.config.productionTip = false;new Vue({//挂载容器el: "#app",})</script>
</body></html>

2.局部注册

 directives:局部注册是在vue实例中通过在对象directives中进行自定义指令

<!DOCTYPE html>
<html lang="zh-cn"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Vue</title>
</head><body><div id="app"><!-- 渲染纯文本 --><h2 v-text="`hello title`"></h2><hr><!--自定义指令渲染文本--><h3 v-mytext="2024"></h3></div><script src="./libs/vue.js"></script><script>// 当文档上指令满足不了我们的需求,可以选择自定义指令//禁止控制台输出日志信息Vue.config.productionTip = false;new Vue({//挂载容器el: "#app",// 2)自定义指令directives: {// 名称mytext: {inserted(el, option) {// console.log(el, option);if (typeof el === 'object') {el.innerHTML = option.value;}}},}})</script>
</body></html>

二、事件修饰符 

事件修饰符是用于修改事件监听器行为的特殊指令。它们以点号 . 结尾,用于在触发事件时执行特定的行为或修改事件的默认行为。

1.常用事件修饰符

1)事件相关修饰符

  1. .stop:阻止事件冒泡。相当于调用 event.stopPropagation()
  2. .prevent:阻止事件的默认行为。相当于调用 event.preventDefault()
  3. .capture:使用事件捕获模式,即在捕获阶段处理事件。
  4. .self:只当事件是从侦听器绑定的元素本身触发时才触发回调。如果事件是从内部元素触发的,则不触发。
  5. .once:事件只会触发一次,触发后会自动移除事件监听器。
  6. .passive:告诉浏览器该事件监听器不会调用 preventDefault()。这可以提高滚动性能。

2)键盘事件相关修饰符

  1. .enter:监听 Enter 键。
  2. .tab:监听 Tab 键。
  3. .delete.backspace:监听删除键(Backspace)。
  4. .esc:监听 Esc 键。
  5. .space:监听空格键。
  6. .up:监听上箭头键。
  7. .down:监听下箭头键。
  8. .left:监听左箭头键。
  9. .right:监听右箭头键

3)鼠标事件相关修饰符

  1. .left:监听鼠标左键点击事件。
  2. .right:监听鼠标右键点击事件。
  3. .middle:监听鼠标中键点击事件。
  4. .up:监听鼠标滚轮向上滚动事件。
  5. .down:监听鼠标滚轮向下滚动事件。

三、属性计算

使用属性计算,你可以在 Vue 实例中定义一些衍生属性,这些属性会根据 Vue 实例的响应式数据动态计算得到。这在很多情况下可以简化模板中的逻辑,使得模板更加清晰和简洁。

通过在Vue实例中在computed对象中定义方法来进行属性计算,在模板语法中方法无需加小括号()

<!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Vue</title><link rel="stylesheet" href="./libs/bootstrap/css/bootstrap.css">
</head>
<body><div id="app"><div class="container mt-3"><div class="row"><div class="col-4"><input v-model="firstName" type="text" class="form-control" placeholder="请输入姓"></div><div class="col-4"><input v-model="lastName" type="text" class="form-control" placeholder="请输入名"></div><div class="col-4"><span style=" font-size: 22px;text-decoration: underline;">{{fullName}}</span></div></div></div><hr><div class="container"><input class="form-control" type="number" v-model="num"><button class="btn btn-success mt-2">计算 {{num}} 乘以 2 等于 {{doubleValue}} </button></div></div><script src="./libs/vue.js"></script><script>//禁止控制台输出日志信息Vue.config.productionTip = false;new Vue({//挂载容器el: "#app",// 设置数据data: {firstName: "",// 姓lastName: "",//名num: 0},// 属性计算 (只读不写)// 例如: fullName , doubleValue这些属性是不可以修改的// 错误:  this.fullName = "xxx"// 此处是对象computed: {// 在这个对象中写方法,这个方法名称就可以作为属性,retrun的值就是计算的结果// 全名// fullName: {//     get(){//         return this.firstName + this.lastName//     }// },fullName(){return this.firstName + this.lastName;},// 获取双倍的值doubleValue(){return this.num * 2;}}})</script>
</body>
</html>

四、属性监听

 在vue实例中在watch对象来监听 Vue 实例上的数据变化,并在数据变化时执行自定义的方法。通过属性监听,你可以监视一个或多个属性的变化,并在这些属性发生变化时执行相应的操作。

<!DOCTYPE html>
<html lang="zh-cn"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Vue</title><link rel="stylesheet" href="./libs/bootstrap/css/bootstrap.css">
</head><body><div id="app"><div class="container mt-3"><input v-model="city" type="text" placeholder="请输入城市" class="form-control"></div><div class="container mt-3"><ul><li @click="play(1)">歌曲1</li><li @click="play(2)">歌曲2</li><li @click="play(3)">歌曲3</li><li @click="play(4)">歌曲4</li></ul></div><div class="container mt-3"><button @click="addAge" class="btn btn-success">改变用户年龄</button></div></div><script src="./libs/vue.js"></script><script>// 属性侦听// 主要是观察数据的变化,只要数据发生改变,就执行相关的回调函数// data、路由等数据发生改变,就可以执行对应的回调,往往用于处理一些异步的操作// 例如: 根据城市名称查询天气信息,根据歌曲id获取歌曲信息//禁止控制台输出日志信息Vue.config.productionTip = false;new Vue({//挂载容器el: "#app",data: {city: "广州",music_id: "",user: {age: 20}},// 侦听器// 侦听器、属性侦听不是计算结果,不用写return // 这些回调函数的名称就是属性名称,例如data: {city: music_id,user 。。。。}watch: {// 观察city属性的变化city: {// nValue(改变之后的数据),oValue(改变之前的数据) 可选参数handler(nValue, oValue) {console.log("观察city是否发生改变....")}},music_id: {handler(nValue, oValue) {console.log("观察music_id是否发生改变....", nValue)}},// 遇到引用数据类型的时候,考虑使用深度侦听user: {deep: true,// 深度侦听immediate: true, // 立即执行handler(nValue, oValue) {console.log("观察user.age是否发生改变....", nValue.age)}}},// 设置方法methods: {play(id) {this.music_id = id;},addAge() {this.user.age++;}}})</script>
</body></html>

在本案例中监听一个对象中的一个属性值的变化中用到了两个常用的修饰符

1.deep:当你想要深度监听对象内部属性的变化时,可以使用 deep 修饰符 。默认情况下,watch 只会监听对象的引用变化,而不会递归监听对象内部属性的变化。

2.immediate:当你想要在声明监听时立即执行一次监听函数时,可以使用 immediate 修饰符

五、属性过滤

通过在vue实例的filter对象 中自定义方法来返回一个过滤正则,可以在模板中使用属性过滤器来动态地对数据进行处理,然后将处理后的数据显示在视图中。Vue 中的属性过滤器通过在模板中使用管道符 | 来实现,语法格式为 {{ expression | filterName }}

<!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Vue</title><link rel="stylesheet" href="./libs/bootstrap/css/bootstrap.css">
</head>
<body><div id="app"><div class="container mt-3"><h3>{{str}}</h3><h3>{{str | xxx }}</h3><h3>{{str | yyy }}</h3><h3>{{str | xxx | zzz }}</h3></div></div><script src="./libs/vue@2.7.16/vue.js"></script><script>//禁止控制台输出日志信息Vue.config.productionTip = false;new Vue({//挂载容器el: "#app",data: {str: "abc123efg456"},// 过滤器// 就是可以作为工具函数来使用哦~~~// 通过 “|” 填写过滤器,让其执行相关的回调函数,在函数作用域中可以把处理结果返回filters: {// 编写xxx回调函数xxx(value){// console.log(this);// window// 去掉所有数字字符return value.replace(/\d/g,'');},yyy(value){// console.log(this);// window// 去掉所有字母字符return value.replace(/[a-z]/ig,'');},zzz(value){// 把字母转大写return  value.toUpperCase();}}})</script>
</body>
</html>

 

         

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

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

相关文章

Http客户端Feign

RestTemplate存在的问题 这是一段使用RestTemplate来发起远程调用的代码&#xff0c;存在以下问题 1&#xff0c;代码可读性差&#xff0c;编程体验不统一&#xff08;其实还好&#xff09; 2&#xff0c;复杂的url难以维护&#xff0c;修改起来十分麻烦 3&#xff0c;总结…

4.9作业

完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示“登录成功“&#xff0c;提供一个Ok 按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳转到其他界面 如果账号和密码不匹配&#xf…

python pygame库的略学

文章目录 概述1. pygame的初始化和退出2. 创建游戏窗口&#xff08;1&#xff09;set_mode()&#xff08;2&#xff09;set_capyion()&#xff08;3&#xff09;update() 3. 游戏循坏与游戏时钟4. 图形和文本绘制&#xff08;1&#xff09;图形绘制&#xff08;2&#xff09;文…

thinkphp5关联预载入with指定字段属性查询

一、thinkphp5.0 如果要指定属性查询&#xff0c;可以使用&#xff1a; $list User::field(id,name)->with([profile>function($query){$query->field(email,phone);}])->select([1,2,3]); foreach($list as $user){// 获取用户关联的profile模型数据dump($user…

MSTP/RSTP的保护功能

目录 原理概述 实验目的 实验内容 实验拓扑 1.配置RSTP/MSTP 2.配置BPDU保护 3.配置根保护 4.配置环路保护 5.配置TC-BPDU保护 原理概述 在RSTP或MSTP交换网络中&#xff0c;为了防止恶意攻击或临时环路的产生&#xff0c;可配置保护功能来增强网络的健壮性和安全性。…

openstack中windows虚拟机时间显示异常问题处理

文章目录 一、问题描述二、元数据信息总结 一、问题描述 openstack创建出windows虚拟机的时候&#xff0c;发现时间和当前时间相差8小时&#xff0c;用起来很难受。 参考&#xff1a;https://www.cnblogs.com/hraa0101/p/11365238.html 二、元数据信息 通过设置镜像的元数据…

pytest教程-24-多重断言插件-pytest-assume

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了pytest指定用例执行顺序插件pytest-ordering,本小节我们讲解一下pytest多重断言插件-pytest-assume。 在自动化测试过程中&#xff0c;我们执行完用例之后&#xff0c;需要验证脚本执行的结果…

如何在 iOS 项目中集成 MiniApp SDK,快速构建智能小程序?

本文介绍如何在 iOS 项目中&#xff0c;集成 MiniApp SDK&#xff0c;使之能够构建智能生活小程序&#xff0c;运行在你的 IoT App 上。 准备工作 在集成 MiniApp SDK 之前&#xff0c;您需要在 涂鸦 IoT 开发平台 上&#xff1a; 注册开发者账号、创建产品、创建功能点等。…

IO进程线程Day8

让2个终端之间互相聊天&#xff0c;使用消息队列去实现 #include <myhead.h> //使用消息队列实现两个进程的相互聊天 #define ERR_MSG(msg) do{fprintf(stderr,"__%d__",__LINE__);\perror(msg);\}while(0) int msgid; typedef struct{long mtype;char text…

Quasi-Direct Drive for Low-Cost Compliant Robotic Manipulation翻译

文章目录 标题摘要I. 引言A. 问题定义和用户需求B. 定义有用的机器人操控器C. 定义有用的带宽和载荷D. 低成本设计约束 II. 相关工作A. 机器人系统中的柔顺性B. 人类载荷下的力控制机械臂C. 现有的低成本机械臂D. 驱动方案 III. 低成本柔顺操控的设计A. 准直驱驱动B. 差分齿带传…

spikingjelly学习-训练网络

【MNIST数据集包含若干尺寸为28*28的8位灰度图像&#xff0c;总共有0~9共10个类别。以MNIST的分类为例&#xff0c;一个简单的单层ANN网络如下 我们也可以用完全类似结构的SNN来进行分类任务。就这个网络而言&#xff0c;只需要先去掉所有的激活函数&#xff0c;再将尖峰神经元…

IDEA 2024.1到底更新啥有用的?

0 关键亮点 全行代码补全 Ultimate IntelliJ IDEA Ultimate 2024.1 针对 Java 全行代码补全。 这项功能由无缝集成到 IDE 中的高级深度学习模型提供支持。 它可以基于上下文分析预测和建议整行代码&#xff0c;有助于提高编码效率。 这些建议由针对不同语言和框架特别训练的专…

博主的简介

1&#xff09;鄙人文宣霈&#xff0c;男&#xff0c;博客名&#xff1a;寻寻问问 &#xff0c;祖籍湖南省永州市东安县。 2&#xff09;一路走来&#xff0c;小学、初中、高中&#xff0c;然后是大学——湖南农业大学&#xff08;本科一批&#xff09;&#xff0c;然后到公司上…

UML学习

UML(Unified Modeling Language)&#xff1a;统一建模语言&#xff0c;提供了一套符号和规则来帮助分析师和设计师表达系统的架构、行为和交互 类图&#xff1a;描绘类、接口之间的关系(继承、实现、关联、依赖等)以及类的内部结构(属性和方法)&#xff0c;直观展现系统的静态…

水资源管理系统:守护生命之源,构建和谐水生态

水资源是维系地球生态平衡和人类社会可持续发展的重要基础。然而&#xff0c;随着人口增长、工业化和城市化的加速&#xff0c;水资源短缺、水质污染和生态破坏等问题日益凸显。在这样的背景下&#xff0c;构建一个全面、高效、智能的水资源管理系统显得尤为迫切和必要。 项目…

AI智能客服机器人是什么?对企业重要吗?

在数字化时代&#xff0c;客户服务是企业与客户建立牢不可破关系的重要桥梁。AI智能客服机器人&#xff0c;顾名思义&#xff0c;就是利用人工智能技术提升客户服务体验的自动化工具。今天&#xff0c;就让我们来揭开AI智能客服机器人的神秘面纱&#xff0c;并讨论它对企业的重…

Bandwidth(UVA 140)

网址如下&#xff1a; Bandwidth - UVA 140 - Virtual Judge (vjudge.net) &#xff08;第三方网站&#xff09; 现在回想一下&#xff0c;我用的IDcache法好像不如用一个集合记录本次出现的结点来用 这样就可以按照字典序遍历&#xff0c;只有遇到带宽更小的才复制&#xf…

【C++ STL有序关联容器】map 映射

文章目录 【 1. 基本原理 】【 2. map 的创建 】2.1 调用默认构造函数&#xff0c;创建一个空的 map2.2 map 被构造的同时初始化2.3 通过一个 map 初始化另一个 map2.4 取已建 map 中指定区域内的键值对&#xff0c;初始化新的 map2.5 指定排序规则 【 2. map 元素的操作 】实例…

Bioorganic Chemistry:中国药科大学王鹏课题组、陈俊青课题组设计的基于AIE机理的高荧光选择性鉴定Cys/HCy

文献来源&#xff1a;Highly selective fluorescent probe based on AIE for identifying cysteine/homocysteine - PubMed (nih.gov) 一、AIE机理在荧光探针设计方向的应用&#xff1a; 参考文献&#xff1a;几种代表性的AIE的发光特点和机制&#xff08;2020-10-11&#xff…

antdPro运行

使用antd-pro脚手架搭建react ts项目_antd pro react-CSDN博客 npm run start