百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

Vue2自定义指令(directive)(vue2自定义指令兼容vue3)

ztj100 2024-10-27 18:35 26 浏览 0 评论


在Vue中,指令都是以 v-xxx 命令,因此自定义指令也是如此

自定义指令时,指令名称不需要加前缀v-,但在调用的时候一定要加前缀v-

自定义一个获取焦点的指令 v-focus

//定义一个全局的指令(directive:指令)
//参数1为指令名称,定义的时候,不需要加 v- ,调用时需要v- ,
//参数2是对象,对象中有指令相关函数,在特定时候运行,
Vue.directive('focus',{
    //获取当前指令(v-focus)绑定的元素e,e.focus()方法在绑定元素插入到DOM中时调用
    inserted:function(e){
       e.focus()
    }
})
//等同于js中: var e = document.getElementById("e")
//             e.focus()
 
//局部指令定义,vm实例中
directives:{
  focus:{
     inserted:function(e){
           e.focus()
     }
  }
}

钩子函数:

  1. bind:只调用一次,第一次绑到到元素时调用,一般用在初始化中,在inserted之前,此时父节点为null,在dom树绘制之前调用,一般用作初始化属性(样式、元素属性)的设置,绑定后属性就已经在当前元素中了。
  2. inserted:被绑定元素插入到父节点时调用,父节点存在即可,只调用一次,在dom树绘制之后调用,一般用作初始化方法(js的行为方法)的设置,绑定到DOM中后立即执行一次。
  3. updated:所在的组件更新时调用,在componentUpdated之前调用,更新前的状态,多次调用
  4. componentUpdated:所在的组件及及子元素全部更新时调用,更新后的状态,多次调用
  5. unbind:只调用一次,指令与元素解绑时调用
  Vue.directive('指令名称',{
            //指令绑定到元素上的时候会立即执行,一般用作初始化,只执行一次,当指令刚被绑定到元素的时候,还没有插入到DOM树中去
            //绑定时不管有没有插入到DOM中,已经有了value="" 和 style="color:red"的属性
            //bind因此可以做一些初始化属性的设置
            bind:function (e) {  
                e.value = "文本框初始值"
                e.style.color = 'red'
            },
            inserted:function (e) { //元素插入到DOM树中后会立即执行一次,可作初始化方法的设置
                e.focus()
            },
            updated:function (e) { //vnode更新的时候会执行,可触发多次
               
            },
            componentUpdated:function (e) {
 
            },
            unbind:function (e) {
 
            }
 
        })
 
 
 <input type="text" v-focus>

钩子函数参数:

  1. el:指令被绑定的当前元素,即当前指令所在的元素,此参数名可以变更,其他参数名不能变更
  2. binding:
  • name:指令名,不包括v-前缀
  • value:指令绑定值,v-color=" 'blue' ","1+1"为2

  • oldValue:指令绑定的前一个值
  • expression:指令绑定值的字符串形式"1+1"就是"1+1"而不是2
  • arg:传递给指令的参数v-color:blue

    modifiers:包含修饰符对象 v-mydirective.foo.bar modifiers为{foo.true,bar,true}

    3.vnode:vue编译器生成的虚拟节点

    4.oldVnode:上一个虚拟节点

    Vue.directive("color",{
                bind:function (e,binding) {
                    e.style.color = binding.value  
                    e.style.color = binding.arg
                }
            })
     
    //注意单引号,否则blue为data中数据
    <input type="text" v-focus v-color="'blue'">
    <input type="text" v-focus v-color:blue>

    自定义指令的简写

    如果只有bind或updated钩子函数,则可以简写

    Vue.directive("color", (e,binding) => {
                    e.style.color = binding.value  
                    e.style.color = binding.arg
                
                 })
     
    //注意单引号,否则blue为data中数据
    <input type="text" v-focus v-color="'blue'">
    <input type="text" v-focus v-color:blue>

    相关推荐

    再说圆的面积-蒙特卡洛(蒙特卡洛方法求圆周率的matlab程序)

    在微积分-圆的面积和周长(1)介绍微积分方法求解圆的面积,本文使用蒙特卡洛方法求解圆面积。...

    python编程:如何使用python代码绘制出哪些常见的机器学习图像?

    专栏推荐...

    python创建分类器小结(pytorch分类数据集创建)

    简介:分类是指利用数据的特性将其分成若干类型的过程。监督学习分类器就是用带标记的训练数据建立一个模型,然后对未知数据进行分类。...

    matplotlib——绘制散点图(matplotlib散点图颜色和图例)

    绘制散点图不同条件(维度)之间的内在关联关系观察数据的离散聚合程度...

    python实现实时绘制数据(python如何绘制)

    方法一importmatplotlib.pyplotaspltimportnumpyasnpimporttimefrommathimport*plt.ion()#...

    简单学Python——matplotlib库3——绘制散点图

    前面我们学习了用matplotlib绘制折线图,今天我们学习绘制散点图。其实简单的散点图与折线图的语法基本相同,只是作图函数由plot()变成了scatter()。下面就绘制一个散点图:import...

    数据分析-相关性分析可视化(相关性分析数据处理)

    前面介绍了相关性分析的原理、流程和常用的皮尔逊相关系数和斯皮尔曼相关系数,具体可以参考...

    免费Python机器学习课程一:线性回归算法

    学习线性回归的概念并从头开始在python中开发完整的线性回归算法最基本的机器学习算法必须是具有单个变量的线性回归算法。如今,可用的高级机器学习算法,库和技术如此之多,以至于线性回归似乎并不重要。但是...

    用Python进行机器学习(2)之逻辑回归

    前面介绍了线性回归,本次介绍的是逻辑回归。逻辑回归虽然名字里面带有“回归”两个字,但是它是一种分类算法,通常用于解决二分类问题,比如某个邮件是否是广告邮件,比如某个评价是否为正向的评价。逻辑回归也可以...

    【Python机器学习系列】拟合和回归傻傻分不清?一文带你彻底搞懂

    一、拟合和回归的区别拟合...

    推荐2个十分好用的pandas数据探索分析神器

    作者:俊欣来源:关于数据分析与可视化...

    向量数据库:解锁大模型记忆的关键!选型指南+实战案例全解析

    本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在...

    用Python进行机器学习(11)-主成分分析PCA

    我们在机器学习中有时候需要处理很多个参数,但是这些参数有时候彼此之间是有着各种关系的,这个时候我们就会想:是否可以找到一种方式来降低参数的个数呢?这就是今天我们要介绍的主成分分析,英文是Princip...

    神经网络基础深度解析:从感知机到反向传播

    本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在...

    Python实现基于机器学习的RFM模型

    CDA数据分析师出品作者:CDALevelⅠ持证人岗位:数据分析师行业:大数据...

    取消回复欢迎 发表评论: