vue2自定义指令

本节目标

  • 快速入门
  • v-loading

快速入门

指令对比

基本语法

  1. 使用: v-指令名="指令值"
  2. 定义: 通过 directives 局部定义或者全局定义
  3. 通过事件对象 el 可以拿到指令所在元素
  4. 通过形参 binding 可以拿到指令的传值
  5. 通过update钩子, 可以监听指令值的变化,进行更新操作

局部注册

<template><div id="app"><input v-focus type="text" /></div>
</template><script>
export default {// 局部注册自定义指令directives: {focus: {// 指定的生命周期: 指令所在的元素, 挂载完毕后触发inserted(el) {// el就是指令绑定的元素el.focus();},},},
};
</script>

全局注册

... ...Vue.directive('focus', {// 指定所在的元素被加载后执行inserted: function (el) {// el就是所绑定的元素el.focus()}
})... ...

指令传值

<template><div id="app"><h2 v-color="color1">我是一个标题</h2><h2 v-color="color2">我是一个标题</h2></div>
</template><script>
export default {data() {return {color1: "red",color2: "blue",}},// 局部注册自定义指令directives: {   color: {inserted(el, binding) {el.style.color = binding.value;},// 指令的值(binding)修改时触发update(el,binding) {el.style.color = binding.value;}}},
};
</script>

v-loading

封装一个v-loading指令, 实现加载中的效果

分析

  1. 本质loading效果就是一个蒙层, 盖在盒子上
  2. 数据请求时, 开启loading状态, 添加蒙层
  3. 数据请求完毕, 关闭loading状态, 移除蒙层

实现

  1. 准备一个loading类, 通过伪元素定位, 设置宽高, 实现蒙层
  2. 开启关闭loading状态, 本质只需要添加和移除类名即可
  3. 结合自定义指令的语法进行封装复用
<template><!-- 2,使用loading指令 --><div class="box" v-loading="isLoading"><ul><li v-for="item in list" :key="item">我是内容{{ item }}</li></ul></div>
</template><script>
export default {data () {return {list: [],isLoading: true,}},async created () {setTimeout(() => {this.list = [1,2,3,4,5]// 3,关闭loading效果this.isLoading = false}, 2000)},directives: {// 1, 注册loading指令loading: {inserted(el, binding) {binding.value ? el.classList.add('loading') : el.classList.remove('loading')},update(el, binding) {binding.value? el.classList.add('loading') : el.classList.remove('loading')}}}
}
</script><style>
/* 伪类 - 蒙层效果 */
.loading:before {content: '';position: absolute;left: 0;top: 0;width: 100%;height: 100%;background: #fff url('./loading.gif') no-repeat center;
}.box {width: 800px;min-height: 500px;border: 3px solid orange;position: relative;
}
</style>

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

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

相关文章

C++进阶:继承

文章目录 继承的概念继承的定义方式继承关系和访问限定符基类和派生类对象的赋值转换继承中的作用域派生类中的默认成员函数构造函数拷贝构造函数赋值拷贝函数析构函数 总结 继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允…

一个开源的Office软件,很离谱的办公神器

你们平时用的办公软件是哪一个&#xff1f;今天给大家分享的是一个“进阶版”office工具ONLY OFFICE&#xff0c;不仅支持Windows、Mac、ios, 安卓等全平台满足你的日常所需&#xff0c;更是提供了大量开挂般的功能。 1、打工人省金币 你们平时使用办公软件最头疼的问题是什么…

第1章Hello world 3/5:Cargo.lock:确保构建稳定可靠:运行第一个程序

讲动人的故事,写懂人的代码 1.6 Cargo.lock:确保构建稳定可靠 “看!”席双嘉一边指着屏幕一边说,“终端窗口提示符的颜色,从绿变黄了。这就意味着代码在上次提交后有点变化。” 赵可菲:“但是我们只是运行了程序,代码应该没动呀。” 席双嘉敲了下git status -uall,这…

PawSQL优化 | 分页查询太慢?别忘了投影下推

​在进行数据库应用开发中&#xff0c;分页查询是一项非常常见而又至关重要的任务。但你是否曾因为需要获取总记录数的性能而感到头疼&#xff1f;现在&#xff0c;让PawSQL的投影下推优化来帮你轻松解决这一问题&#xff01;本文以TPCH的Q12为案例进行验证&#xff0c;经过Paw…

高考志愿填报的技巧和方法

高考过后&#xff0c;最让家长和学生需要重视的就是怎样填报志愿。高考完和出成绩之前有一段很长的时间&#xff0c;而成绩出来之后往往报考的时间非常的紧张。在很短的时间内&#xff0c;高考的学生和他的家长要综合高考的成绩&#xff0c;考虑院校&#xff0c;专业&#xff0…

Vue中的组件通信

父向子通信 1.定义props 子组件中&#xff0c;定义期望接收的属性。例如&#xff0c;在子组件的script部分&#xff1a; export default {props: {message: String // 假设父组件要传递一个字符串类型的数据} } 2.传递数据 在父组件的模板中&#xff0c;通过属性绑定的方式将…

分享: 动图网站

Stickers for iOS & Android | GIPHY 这个网站有一些外国的制作的动图

OOP面试问题 - C#

文章概述 背景问题答案概括 背景 以下是最流行的 OOP面试问题和答案的列表。这些 OOPS 面试问题适用于初学者和专业 C# 开发人员。 问题 什么是对象&#xff1f;什么是封装&#xff1f;什么是抽象&#xff1f;什么是继承&#xff1f;哪些是访问说明符&#xff1f;如何在 C…

PHP实现一个简单的接口签名方法以及思路分析

文章目录 签名生成说明签名生成示例代码签名校验示例代码 签名生成说明 B项目需要调用A项目的接口&#xff0c;由A项目为B项目分配 AccessKey 和 SecretKey&#xff0c;用于接口加密&#xff0c;确保不易被穷举&#xff0c;生成算法不易被猜测。 最终需要确保包含签名的参数只…

2 程序的灵魂—算法-2.4 怎样表示一个算法-2.4.6 用计算机语言表示算法

我们的任务是用计算机解题&#xff0c;就是用计算机实现算法&#xff1b; 用计算机语言表示算法必须严格遵循所用语言的语法规则。 【例 2.20】求 12345 用 C 语言表示。 main() {int i,t; t1; i2; while(i<5) {tt*i; ii1; } printf(“%d”,t); } 【例 2.21】求级数的…

12_1 Linux Yum进阶与DNS服务

12_1 Linux Yum进阶与DNS服务 文章目录 12_1 Linux Yum进阶与DNS服务[toc]1. Yum进阶1.1 自定义yum仓库1.2 网络Yum仓库 2. DNS服务2.1 为什么要使用DNS系统2.2 DNS服务器的功能2.3 DNS服务器分类2.4 DNS服务使用的软件及配置2.5 搭建DNS服务示例2.6 DNS特殊解析 1. Yum进阶 1…

32-读取Excel数据(xlrd)

本篇介绍如何使在python中读取excel数据。 一、环境准备 先安装xlrd模块&#xff0c;打开cmd&#xff0c;输入 pip install xlrd 在线安装。 二、基本操作 import xlrd# 打开excel表格 data xlrd.open_workbook(test.xlsx)# 2.获取sheet表格 # 方式一&#xff1a;通过索引顺…

RocketMq详解:二、SpringBoot集成RocketMq

在上一章中我们对Rocket的基础知识、特性以及四大核心组件进行了详细的介绍&#xff0c;本章带着大家一起去在项目中具体的进行应用&#xff0c;并设计将其作为一个工具包只提供消息的分发服务和业务模块进行解耦 在进行本章的学习之前&#xff0c;需要确保你的可以正常启动和…

【算法篇】滑动窗口的最大值JavaScript版

滑动窗口的最大值 题目描述&#xff1a; 给定一个长度为 n 的数组 num 和滑动窗口的大小 size &#xff0c;找出所有滑动窗口里数值的最大值。 例如&#xff0c;如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3&#xff0c;那么一共存在6个滑动窗口&#xff0c;他们的最大值…

Linux Kernel入门到精通系列讲解(RV-Kernel 篇) 5.4 添加GPU和Framebuffer显示设备

1. 概述 上一章节我们已经成功的移植完busybox,到此,我们已经把我们Naruto-Pi的基本功能全部实现了,接下来,我们会不断探索,引入一些高级驱动,哇咔咔,真厉害,本章节比较简单,我们使用之前我们的8组virtio,我们就用其中一组模拟GPU,由于GPU我没深入了解过,所以我们…

[FFmpeg学习]初级的SDL播放mp4测试

在之前的学习中&#xff0c;通过AVFrame来保存为图片来认识了AVFrame&#xff0c; [FFmpeg学习]从视频中获取图片_ffmpeg 获取图片-CSDN博客 在获取到AVFrame时&#xff0c;还可以调用SDL方法来进行展现&#xff0c;实现播放效果。 参考资料 SDL&#xff0c;ffmpeg实现简单…

MySQL中的数据库约束

目录 导读&#xff1a; 约束类型 1、not null&#xff08;不能为空&#xff09; 2、unique(唯一) 3、default(默认值约束) 4、primary key(唯一)与unique 相同点&#xff1a; 不同点&#xff1a; auto_increment&#xff1a; 5、foreign key(外键) 语法形式&#xff…

康姿百德集团公司官网床垫价格透明,品质睡眠触手可及

选择康姿百德床垫&#xff0c;价格透明品质靠谱&#xff0c;让你拥有美梦连连 在当今社会&#xff0c;良好的睡眠质量被越来越多的人所重视。睡眠不仅关系到我们第二天的精力状态&#xff0c;更长远地影响着我们的身体健康。因此&#xff0c;选择一款合适的床垫对于获得优质睡…

损失函数(Loss Function)

损失函数&#xff08;Loss Function&#xff09;是机器学习领域中一个至关重要的概念&#xff0c;用于衡量模型预测结果与真实结果之间的误差程度。 一、定义 损失函数或代价函数是将随机事件或其相关随机变量的取值映射为非负实数的函数&#xff0c;以表示该随机事件的“风险…

antdv 穿梭框

antd的穿梭框的数据貌似只接收key和title&#xff0c;而且必须是字符串&#xff08;我测试不是字符串的不行&#xff09;&#xff0c; 所以要把后端返回的数据再处理一下得到我们想要的数据 除了实现简单的穿梭框功能&#xff0c;还想要重写搜索事件&#xff0c;想达到的效果是…