【vue2第十三章】自定义指令 自定义v-loading指令

news2024/10/6 6:46:48

自定义指令

像 v-html,v-if,v-for都是vue内置指令,而我们也可以封装自定义指令,提升编码效率。

什么是自定义指令?
自己定义的一些指令,可以进行一些dom操作,扩展格外的功能。比如让图片懒加载,让input自动聚焦。
自定义指令又分为全局注册和局部注册。
在这里插入图片描述
使用方法则是与内置指令一样,直接在标签上写v-指令名即可。
在这里插入图片描述
全局注册指令
在main.js中为vue对象添加:

//focus是指令名称
Vue.directive('focus',{
//inserted是指令的生命周期函数,指再页面中插入此元素时调用
  inserted(el){
//为元素聚焦
    el.focus()
  }
} 
)

使用直接在标签上面写v-指令名称即可:

    <input  type="text" v-focus :value="msg"  ref="inp">

局部注册与使用

<template>
  <div>
    <!-- 添加v-指令名称 v-focus -->
    <input  type="text" v-focus :value="msg"  ref="inp">
  </div>
</template>

<script>
export default {
    data(){
        return{
        }
    },
    props:{
        msg:String
    },
    mounted(){
    },
    //在directives中写指令
    directives:{
        //指令名称
        "focus":{
            //在指令被插入到页面中时调用
            inserted(el){
                //el代表内添加v-focus的元素,为它聚焦    
                el.focus()
            }
        }
    }
}
</script>

实现一个自定义指令

定义一个color指令为标签修改颜色,color指令需要一个颜色值,传入不同的值,标签文字显示不同颜色
通过binding.value可以取到当前指令的值,再通过value去修改标签。
代码:

<template>
  <div>
    <div v-color="color1">你好 vue</div>  
    <div v-color="color2">你好 vue</div>  

  </div>
</template>

<script>
export default {
    data(){
        return{
            color1:'red',
            color2:'blue'
        }
    },
    props:{
        msg:String
    },
    mounted(){
    },
    //在directives中写指令
    directives:{
        //指令名称
        "color":{
            //在指令被插入到页面中时调用
            inserted(el,binding){
                //el代表内添加v-color的元素,为它添加字体颜色  
                el.style.color=binding.value
            },
            //在属性值更新时调用
            update(el,binding){
                //为color更新颜色
                el.style.color=binding.value
            },
        }
    }
}
</script>

效果:
在这里插入图片描述
其中修改data的color1和color2就会修改字体颜色。
总结:
在这里插入图片描述

v-loading指令封装

在这里插入图片描述
分析:

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

具体步骤实现:
1.准备一个loading 类,通过伪元素定位,设置宽高,实现蒙层

.loading:before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background:#fff url('./assets/91jiazai.png') no-repeat center;
}

2.开启关闭 loading 状态(添加移除蒙层),本质只需要添加移除类即可

export default {
  name: "App",
  data() {
    return {
    //显示内容
      msg: "你好!vue",
      //判断是否加载成功
      isloading:true
    };
  },
  created(){
  //模拟发送请求,返回数据花费了3秒钟
    setTimeout(() => {
      console.log(this.msg);
      //接收数据成功,将数据改为false显示页面
      this.isloading = false;
    }, 3000);
  },
      //在directives中写指令
      directives:{
        //指令名称
        "loading":{
            inserted(el,binding){
              //如果值为true添加伪类 ,否则不添加
              binding.value?el.classList.add('loading'):el.classList.remove('loading')
            },
            update(el,binding){
            //如果值为true添加伪类 ,否则不添加
              binding.value?el.classList.add('loading'):el.classList.remove('loading')
            }
        }
    }
};
  

3.结合自定义指令的语法进行封装复用
为标签添加v-loading = “数据”

<template>
  <div id="app">
    <div class="box" v-loading="isloading">
      {{ msg }}
    </div>
</div>
</template>

效果进入页面时:
在这里插入图片描述
模拟请求完成之后:
在这里插入图片描述

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

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

相关文章

第七章:敏捷开发工具方法-part2-CI/CD工具介绍

文章目录 前言一、CI-持续集成1.1 安装部署gitlab 二、gitlab CI配置三、jenkins实现CI / CD3.1 安装jenkins3.2 配置CI3.3 配置CD3.4 其他构建方式1、定时构建2、指定参数构建3、webhook自动根据git事件进行构建 前言 什么是CI/Cd&#xff1f; CI-Continuous integration&…

web前端——简单的网页布局案列

✨博主&#xff1a;命运之光 &#x1f338;专栏&#xff1a;Python星辰秘典 &#x1f433;专栏&#xff1a;web开发&#xff08;简单好用又好看&#xff09; ❤️专栏&#xff1a;Java经典程序设计 ☀️博主的其他文章&#xff1a;点击进入博主的主页 目录 问题背景 解决样例 …

[Vue3 博物馆管理系统] 使用Vue3、Element-plus tabs组件构建选项卡功能

系列文章目录 第一章 定制上中下&#xff08;顶部菜单、底部区域、中间主区域显示&#xff09;三层结构首页 第二章 使用Vue3、Element-plus菜单组件构建菜单 第三章 使用Vue3、Element-plus走马灯组件构建轮播图 第四章 使用Vue3、Element-plus tabs组件构建选项卡功能 [第五…

Tomcat多实例和负载均衡动静分离

一、Tomcat多实例部署 安装jdk 设置jdk环境变量 安装tomcat 配置Tomcat环境变量 修改端口号 修改tomcat中startup.sh和shutdown.sh文件添加tomcat环境变量 启动Tomcat中的startup.sh 浏览器测试 http://192.168.30.100:8080 http://192.168.30.100:8081 二、负载均衡动静分离…

GPT 内部 — I : 了解文本生成

年轻的陀思妥耶夫斯基被介绍给生成AI&#xff0c;通过Midjourney创建 一、说明 我经常与不同领域的同事互动&#xff0c;我喜欢向几乎没有数据科学背景的人传达机器学习概念的挑战。在这里&#xff0c;我试图用简单的术语解释 GPT 是如何连接的&#xff0c;只是这次是书面形式。…

Elasticsearch:使用 ESRE 和生成式 AI 了解 TLS 日志错误

作者&#xff1a;DAVID HOPE 本博客介绍了 Elasticsearch 相关性引擎 (ESRE​​) 及其 Elastic Learned Sparse Encoder 功能的新颖应用&#xff0c;特别是在日志分析中。 最近发布的 Elasticsearch Relevance Engine™ (ESRE™) 包含一系列重要功能&#xff0c;可增强搜索能力…

2023移动软件开发实验5

2023年夏季《移动软件开发》实验报告 姓名和学号&#xff1f;本实验属于哪门课程&#xff1f;中国海洋大学23夏《移动软件开发》实验名称&#xff1f;实验5&#xff1a;高校新闻网博客地址&#xff1f;XXXXXXXGithub仓库地址&#xff1f;https://github.com/enfantsRichesDepr…

深入理解联邦学习——联邦学习的定义

分类目录&#xff1a;《深入理解联邦学习》总目录 假设有两个不同的企业 A A A和 B B B&#xff0c;它们拥有不同的数据。比如&#xff0c;企业 A A A有用户特征数据&#xff0c;而企业 B B B有产品特征数据和标注数据。这两个企业按照GDPR准则是不能粗暴地把双方数据加以合并的…

【C++】函数重载 ① ( 函数重载概念 | 函数重载判断标准 - 参数个数 / 类型 / 顺序 | 返回值不是函数重载判定标准 )

文章目录 一、函数重载1、函数重载概念2、函数重载判断标准 二、代码示例1、代码示例 - 函数重载2、代码示例 - 返回值不是函数重载判定标准 博客总结 : 重载函数 : 使用 相同 的 函数名 , 定义 不同 的 函数参数列表 ;判定标准 : 只有 函数参数 的 个数 / 类型 / 顺序 的不同…

Pandas常用指令

astype astype的作用是转换数据类型&#xff0c;astype是没办法直接在原df上进行修改的&#xff0c;只能通过赋值的形式将原有的df进行覆盖&#xff0c;即df df.astype(dtype) astype的基本语法 DataFrame.astype(dtype, copyTrue, errorsraise) dtype参数指定将数据类型转换…

Pytorch从零开始实战01

Pytorch从零开始实战——MNIST手写数字识别 文章目录 Pytorch从零开始实战——MNIST手写数字识别环境准备数据集模型选择模型训练可视化展示 环境准备 本系列基于Jupyter notebook&#xff0c;使用Python3.7.12&#xff0c;Pytorch1.7.0cu110&#xff0c;torchvision0.8.0&…

Python综合案例(动态柱状图)

一、基础柱状图 基本代码&#xff1a; """ 演示基础柱状图的开发 """ from pyecharts.charts import Bar from pyecharts.options import LabelOpts # 使用Bar构建基础柱状图 bar Bar() # 添加x轴的数据 bar.add_xaxis(["中国", &q…

谷歌浏览器打开白屏 后台还有还有很多google chrome进程在运行

环境&#xff1a; Win10 专业版 谷歌浏览器 版本 116.0.5845.141&#xff08;正式版本&#xff09; &#xff08;64 位&#xff09; L盾加密终端 问题描述&#xff1a; 谷歌浏览器打开白屏 后台还有还有很多google chrome进程在运行&#xff0c;要全部结束谷歌浏览器进程&…

pear admin 新增模块流程

pear admin 新增模块流程 一、界面新增模块二、增加路由情况三、增加前端页面四、增加db Module配置 一、界面新增模块 增加主菜单 增加子菜单 对应底层表&#xff1a;rt_power 二、增加路由情况 增加路由代码 from flask import render_template from common.utils.righ…

如何实现24/7客户服务自动化?

传统的客服制胜与否的法宝在于人&#xff0c;互联网时代&#xff0c;对于产品线广的大型企业来说&#xff1a;单靠人力&#xff0c;成本大且效率低&#xff0c;相对于产品相对单一的中小型企业来说&#xff1a;建设传统客服系统的成本难以承受&#xff0c;企业客户服务的转型已…

计算机网络初识

目录 1、计算机网络背景 网络发展 认识 "协议" 2、网络协议初识 OSI七层模型 TCP/IP五层(或四层)模型 3、网络传输基本流程 网络传输流程图 数据包封装和分用 4、网络中的地址管理 认识IP地址 认识MAC地址 1、计算机网络背景 网络发展 在之前呢&…

尼康D90使用心得

文章目录 规格参数快速指南相机机身模式拨盘控制面板取景器拍摄信息展示 核心功能指令拨盘拍摄模式自动模式场景模式快门速度和光圈 固件、软件、驱动升级更多细节参考 规格参数 型号尼康D90发布日期2008年08月机身特性APS-C规格数码单反产品定位中端单反传感器类型CMOS传感器…

Redis Redis的数据结构 - 通用命令 - String类型命令 - Hash类型命令

目录 Redis的数据结构&#xff1a; Redis命令&#xff1a; 通用命令&#xff1a;&#xff08;通用指令是部分数据类型的&#xff0c;都可以使用的指令&#xff09; KEYS查询命令&#xff1a; DEL删除命令&#xff1a; EXISTS判断命令&#xff1a; EXPIPE有效期设置命令&…

Ubuntu系统安装JDK1.8(附网盘链接)

这里写目录标题 1.下载JDK&#xff1a;2.将压缩包上传至服务器&#xff1a;3.安装JDK&#xff1a;4.配置环境变量&#xff1a;5.配置生效&#xff1a;6.检查JDK版本&#xff1a; 1.下载JDK&#xff1a; 方式一&#xff1a;[官网链接](https://www.oracle.com/java/technologie…

vue3+vant4封装日期时间组件(年月日时分秒)

vant4目前无法直接使用vant3自带的年月日时分秒组件&#xff0c;综合考虑下&#xff0c;决定自己封装一个&#xff01; vue3vant4封装日期时间组件&#xff08;年月日时分秒&#xff09; 效果图代码片段核心组件代码引入 效果图 代码片段 核心组件代码 <template><!…