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

这篇具有很好参考价值的文章主要介绍了【vue2第十三章】自定义指令 自定义v-loading指令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

自定义指令

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

什么是自定义指令?
自己定义的一些指令,可以进行一些dom操作,扩展格外的功能。比如让图片懒加载,让input自动聚焦。
自定义指令又分为全局注册和局部注册。
【vue2第十三章】自定义指令 自定义v-loading指令,vue,vue.js,javascript,前端,html,开发语言,前端框架
使用方法则是与内置指令一样,直接在标签上写v-指令名即可。
【vue2第十三章】自定义指令 自定义v-loading指令,vue,vue.js,javascript,前端,html,开发语言,前端框架
全局注册指令
在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>

效果:
【vue2第十三章】自定义指令 自定义v-loading指令,vue,vue.js,javascript,前端,html,开发语言,前端框架
其中修改data的color1和color2就会修改字体颜色。
总结:
【vue2第十三章】自定义指令 自定义v-loading指令,vue,vue.js,javascript,前端,html,开发语言,前端框架

v-loading指令封装

【vue2第十三章】自定义指令 自定义v-loading指令,vue,vue.js,javascript,前端,html,开发语言,前端框架
分析:

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>

效果进入页面时:
【vue2第十三章】自定义指令 自定义v-loading指令,vue,vue.js,javascript,前端,html,开发语言,前端框架
模拟请求完成之后:
【vue2第十三章】自定义指令 自定义v-loading指令,vue,vue.js,javascript,前端,html,开发语言,前端框架文章来源地址https://www.toymoban.com/news/detail-699005.html

到了这里,关于【vue2第十三章】自定义指令 自定义v-loading指令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Vue2.0源码学习】指令篇-Vue自定义指令

    在 Vue 中,除了 Vue 本身为我们提供的一些内置指令之外, Vue 还支持用户自定义指令。并且用户有两种定义指令的方式:一种是使用全局API—— Vue.directive 来定义全局指令,这种方式定义的指令会被存放在 Vue.options[\\\'directives\\\'] 中;另一种是在组件内的 directive 选项中定义专为

    2024年02月09日
    浏览(43)
  • vue2 自定义指令,插槽

    1.自定义指令 基本语法(全局、局部注册) 指令的值 v-loading的指令封装 2.插槽 默认插槽 具名插槽 作用域插槽 1.指令介绍 内置指令: v-html、v-if、v-bind、v-on … 这都是Vue给咱们内置的一些指令,可以直接使用 自定义指令:同时Vue也支持让开发者,自己注册一些指令。这些指

    2024年02月11日
    浏览(43)
  • 第十三章 接口测试(笔记)

    一、接口测试分类     内部接口:测试被测系统各个子模块之间的接口,或者被测系统提供给内部系统使用的接口     外部接口:         1.被测系统调用外部的接口          2.系统对外提供的接口 接口测试重点:检查接口参数传递的正确性,接口功能的正确性,输出结

    2024年02月02日
    浏览(45)
  • 第十三章 python之爬虫

    Python基础、函数、模块、面向对象、网络和并发编程、数据库和缓存、 前端、django、Flask、tornado、api、git、爬虫、算法和数据结构、Linux、设计题、客观题、其他

    2024年02月04日
    浏览(53)
  • [C国演义] 第十三章

    力扣链接 根据题目要求: 返回的数对应的下标各不相同 三个数之和等于0 不可包含重复的三元组 – – 即 顺序是不做要求的 如: [-1 0 1] 和 [0, 1, -1] 是同一个三元组 输出答案顺序不做要求 暴力解法: 排序 + 3个for循环 + 去重 — — N^3, 肯定超时 优化: 排序 + 双指针 + 去重 — —

    2024年02月08日
    浏览(39)
  • NodeJs第十三章 cookie

    假设服务器有一个接口,通过请求这个接口,可以添加一个管理员 但是,不是任何人都有权力做这种操作的 那么服务器如何知道请求接口的人是有权力的呢? 答案是:只有登录过的管理员才能做这种操作 可问题是,客户端和服务器的传输使用的是http协议,http协议是无状态

    2024年01月19日
    浏览(34)
  • 《微服务实战》 第十三章 JWT

    【项目实战】Spring boot整合JWT、Vue案例展示用户鉴权 【微服务实战】JWT JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案。 基于JSON的开发标准 用户信息加密到token里,服务器不保存任何用户信息 在传统的用户登录认证中,因为http是无状态的,所以都是采用session方式

    2024年02月06日
    浏览(71)
  • Vue2-收集表单数据、过滤器、内置指令与自定义指令、Vue生命周期

    🥔:我徒越万重山 千帆过 万木自逢春 更多Vue知识请点击——Vue.js 1、不同标签的value属性 若: input type=\\\"text\\\"/ 普通输入框,则v-model收集的是value值,用户输入的就是value值。 若: input type=\\\"radio\\\"/ 单选框,则v-model收集的是value值,且要给标签配置value值。 若: input type=\\\"checkb

    2024年02月13日
    浏览(45)
  • 精读《图解密码技术》——第十三章 PGP

      PGP是一款由个人编写的密码软件,PGP是为了保护处于极端状况下的人们的隐私而开发的,如果这些人的信息被窃听,那么可能是性命攸关的大事件。   OpenPGP是对密文和数字签名格式进行定义的标准规格。   GNU Privacy Guard ( GnuPG、GPG)是一款基于OpenPGP标准开发的密码学

    2024年02月05日
    浏览(52)
  • 第十三章,枚举与泛型例题

    例题1 结果   例题2 结果   例题3 结果     例题4 结果 例题5  结果 例题6  结果 例题7  结果 例题8  结果

    2024年02月06日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包