zoukankan      html  css  js  c++  java
  • vue自定义指令--directive_读书笔记

    以下摘录自:https://segmentfault.com/a/1190000018767046

    Vue中内置了很多的指令,如v-model、v-show、v-html等,但是有时候这些指令并不能满足我们,或者说我们想为元素附加一些特别的功能,这时候,我们就需要用到vue中一个很强大的功能了—自定义指令。

    在开始之前,我们需要明确一点,自定义指令解决的问题或者说使用场景是对普通 DOM 元素进行底层操作,所以我们不能盲目的胡乱的使用自定义指令。

    如何声明自定义指令?

    就像vue中有全局组件和局部组件一样,他也分全局自定义指令和局部指令。

    let Opt = {
        bind:function(el,binding,vnode){ },
        inserted:function(el,binding,vnode){ },
        update:function(el,binding,vnode){ },
        componentUpdated:function(el,binding,vnode){ },
        unbind:function(el,binding,vnode){ },
    }

    对于全局自定义指令的创建,我们需要使用 Vue.directive接口

    Vue.directive('demo', Opt)

    对于局部组件,我们需要在组件的钩子函数directives中进行声明

    Directives: {
        Demo:     Opt
    }

    Vue中的指令可以简写,上面Opt是一个对象,包含了5个钩子函数,我们可以根据需要只写其中几个函数。如果你想在 bind 和 update 时触发相同行为,而不关心其它的钩子,那么你可以将Opt改为一个函数

    let Opt = function(el,binding,vnode){ }

    如何使用自定义指令?

    对于自定义指令的使用是非常简单的,如果你对vue有一定了解的话。

    我们可以像v-text=”test”一样,把我们需要传递的值放在‘=’号后面传递过去。

    我们可以像v-on:click=”handClick” 一样,为指令传递参数’click’。

    我们可以像v-on:click.stop=”handClick” 一样,为指令添加一个修饰符。

    我们也可以像v-once一样,什么都不传递。

    每个指令,他的底层封装肯定都不一样,所以我们应该先了解他的功能和用法,再去使用它。

    自定义指令的 钩子函数

    上面我们也介绍了,自定义指令一共有5个钩子函数,他们分别是:bind、inserted、update、componentUpdate和unbind。

    对于这几个钩子函数,了解的可以自行跳过,不了解的我也不介绍,自己去官网看,没有比官网上说的更详细的了:钩子函数

    项目中的bug

    在项目中,我们自定义一个全局指令my-click

    Vue.directive('my-click',{
        bind:function(el, binding, vnode, oldVnode){
            el.addEventListener('click',function(){
                console.log(el, binding.value)
            })
        }
    })

     同时,有一个数组arr:[1,2,3,4,5,6],我们遍历数组,生成dom元素,并为元素绑定指令:

    <ul>
        <li v-for="(item,index) in arr" :key="index" v-my-click="item">{{item}}</li>
    </ul>

  • 相关阅读:
    1级搭建类106-Oracle 19c 单实例 FS(华为云)公开
    table表格超出部分显示省略号
    hibernate自动创建表报表不存在
    TCP/IP协议三次握手与四次挥手
    struts2运行流程
    Errors occurred during the build. Errors running builder 'Validation' on pro
    ads查询结果中文显示方框问题
    plsql登录报错身份证明检索失败
    隐藏域传值到后台controller
    获取select被选中的option的值
  • 原文地址:https://www.cnblogs.com/DZzzz/p/12982181.html
Copyright © 2011-2022 走看看