Vue中的自定义指令——全局和局部

2023-11-08

通过自定义指令,我们可以对DOM进行更多的底层操作,这样不仅可以在某些场景下为我们提供解决问题的思路,而且让我们对vue的底层有了进一步的了解。

一、注册全局指令

通过Vue.directive({})注册全局指令

钩子函数:

(1)bind:此钩子函数只会被调用一次,可以定义一个在绑定时执行一次的初始化动作
(2)inserted:当被绑定的元素插入到父元素中时调用
(3)update:不论被绑定的值是否发生了变化,在更新时都会被调用
(4)componentUpdated:被绑定的元素在模板完成一次更新周期时调用
(5)unbind:元素解绑时调用,只调用一次

参数:

(1)el:指令所绑定的DOM元素,可以直接用来操作DOM
(2)binding:一个对象,包含以下属性:
name:指令名称
value:指令绑定的值
oldValue:指令绑定前一个值
expression:绑定值的字符串形式
arg:传给指令的参数
modifiers:包含修饰符的对象

<div id="app">
    <p>页面载入时,input 元素自动获取焦点</p>
    <input v-focus="meg"><br>
</div>
<script>
   Vue.directive('focus', {
        bind(el,binding){
            el.style.backgroundColor=binding.value.color;
        },
        inserted(el) {
            el.focus()
        }
    })

    new Vue({
        el:'#app',
        data:{
            meg:{
                color:'cadetblue'
            }
        }
    })
</script>

在这里插入图片描述
此时光标在输入框内闪烁

二、注册局部指令

通过directives:{}注册局部指令

<div id="app">
    <p>页面载入时,input 元素自动获取焦点</p>
    <input v-focus="meg"><br>
</div>
<script>
new Vue({
    el: '#app',
    data:{
        meg:{
            color:'cadetblue'
        }
    },
    directives: {
        focus: {
            bind(el,binding){
                el.style.backgroundColor=binding.value.color;
            },
            inserted(el) {
                el.focus()
            }
        }
    }
})
</script>

效果如上图所示

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue中的自定义指令——全局和局部 的相关文章

  • 用Electron将web网页程序包装成桌面应用

    用Electron将web网页程序包装成桌面应用 前提 web 端页面 真的太容易一不小心关掉了 或者 标签页比较多的时候不太容易找到 所以决定快速包装一个 认识electron electron快速入门 搭建electron项目 第一步

随机推荐

  • MySQL数据库:SQL语句

    MySql数据库系列阅读 MySQL数据库 MySQL数据库 SQL语句 MySQL数据库 完整性约束 MySQL数据库备份与还原 MySQL数据库 编码 1 SQL概述 1 1 什么是SQL SQL Structured Query La
  • educoder 数据库

    查询CS系学生选择的课程 列出学号 课程号 成绩 select sno cno grade from Sc where Sno in select Sno from Student where Sdept CS 查询没有选C06 课程号 课
  • node连接mysql报错:ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested

    NodeJs 代码 const mysql require mysql const db mysql createPool host 127 0 0 1 user root password database dbtest1 db quer
  • uni-app微信分享 自定义分享链接在iOS中不生效的问题处理

    最近使用uni app开发了一个微信小程序使用的功能 需要用到分享给微信好友的功能 如果不做如下设置的话 本身微信默认的分享只是当前页面 分享 initShare let this this var linkUrl this GLOBAL
  • 飞机大战游戏微信小程序源码

    目录 软件介绍 微信飞机大战游戏特色 源码链接 软件介绍 微信飞机大战游戏是一款十分好玩有趣的射击类型手游 游戏的操作简单玩家很容易上手 玩法也十分的有趣 具有一定的挑战性 游戏中还会不时的出现各种让你意想不到的惊喜哦 别再犹豫 一起来感受
  • Java 4-1&2、全局异常处理

    全局异常处理 注 使用Mybatis自带的异常处理 简单异常处理 用到的注解 ControllerAdvice Spring3 2提供的新注解 Controller增强器 可对controller层中被 RequestMapping 注解了
  • 解决openwrt ipk missing dependencies libpthread librt

    新版本的trunk有在ipk打包的过程中的bug 他不能自动识别SDK中已经变异的动态链接库 比如libpthread libboost这些 解决方案是修改与pakage里同级的makefile的内容 可以修改如下 主要是添加DEPENDS
  • 高斯消元法 matlab_高斯消元法解线性方程组

    假设矩阵A是一个n阶非奇异方阵 那么对于任意一个n维向量b 线性方程组Ax b有唯一的解 考虑如下方程组 我们通常为了求解它 我们把 4乘以第一行加到第二行 7乘以第一行加到第三行 然后在进行求解 这个过程就是高斯消元法 下面我们看看通过m
  • ubuntu与centos对比和应用场景(非常透彻的一篇文章)

    观点1 CentOS适用于服务器 Ubuntu则适用于个人桌面 服务器 这一点是CentOS胜 虽然它们同样是开源 免费 CentOS它的源码是来自由商业服务器Red Hat Enterprise Linux 有很多公司都是用CentOS来
  • Typora设置字体颜色的解决方案

    关于Typora设置字体颜色的解决方案 Typora无疑是一款功能强大的编辑器 但是却无法像Word和WPS一样 随意更改设置自己喜欢的颜色 本文给出的方法需要提前安装软件 AutoHotKey 下面给出详细的操作方法 安装AutoHotK
  • 财报解读:首次全口径盈利,快手深耕电商找准了发展门道?

    快手成功闯过了盈利大关 近日快手发布的Q2财报显示 其借助于电商 内循环 取得超预期成效 不仅用户数相比一季度环比净增1900万 再创新高 而且迎来了成立以来首次单季度全口径盈利 对于快手盈利能力的大幅提升 资本市场也做出积极反应 财报发布
  • 算法记录——快速判定多个数(1~1e18)是否为质数(Miller_rabin)

    质数判定 题目描述 判定输入的数是不是质数 输入格式 若干行 一行一个数 行数不超过 105 输出格式 对于输入的每一行 如果 是质数输出一行 Y 否则输出一行 N 样例 样例输入 1 2 6 9 666623333 样例输出 N Y N
  • [Mybatis]Cannot convert string '\xAC\xED\x00\x05ur...' from binary to utf8mb3

    在使用 Mybatis Plus 的 Lambda 条件查询时 报出了这个 Cannot convert string xAC xED x00 x05ur from binary to utf8mb3 错误 java UpdateWrapp
  • 期货开户水滴石穿知行合一

    上千年来 人生价值一直都在改变 唯一没有改变的就是价值本身的规律 如果从另一个角度去观察 或许会有另外一番心境 有句老话叫做后生可畏 也许后生并不可畏 真正让人可畏可敬的或许是代表一个时代的思想和精神 如果相信自己能活着 那么只要不放弃 就
  • (转载)谈SDH、MSTP、OTN和PTN的区别和联系

    http tech c114 net 169 a892299 html width 250 height 24 frameborder 0 allowtransparency true marginwidth 0 marginheight
  • BarTender.Application COM 多次调用引发后台进程数不断增加的问题

    引用文章方法测试 目前未发现问题 Closing Instance Of Bartender BarTender Support Portal seagullscientific com Closing Instance Of Barten
  • angular:路由直接import xxx-route.module文件的坑

    问题 惰性加载可以直接import xxx route module 而且可能一开始始不报错 如果在html使用第三方库的组件时 在xxx module中import对应的module 报错仍然不能解决 解决办法 const routes
  • java白盒测试代码_junit白盒测试Java.doc

    计算机科学与技术系 实 验 报 告 专业名称 软件工程 课程名称 软件测试 项目名称 白盒测试之赋税管理系统 班 级 12级软件工程 学 号 1204091034 姓 名 常成 同组人员 实验日期 2014 10 13 一 实验内容 利用白
  • 基于HAL库的FREERTOS----------一.任务

    FreeROTS 就是一个免费的 RTOS 类系统 这里要注意 RTOS 不是指某一个确定的系统 而是指一类系统 比如 UCOS FreeRTOS RTX RT Thread 等这些都是 RTOS 类操作系统 FreeRTOS 是 RTOS
  • Vue中的自定义指令——全局和局部

    Vue中的自定义指令 一 注册全局指令 二 注册局部指令 通过自定义指令 我们可以对DOM进行更多的底层操作 这样不仅可以在某些场景下为我们提供解决问题的思路 而且让我们对vue的底层有了进一步的了解 一 注册全局指令 通过Vue dire