Vue.directive()的用法和实例

官网实例:

https://cn.vuejs.org/v2/api/#Vue-directive

https://cn.vuejs.org/v2/guide/custom-directive.html

指令定义函数提供了几个钩子函数(可选):

    bind: 只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作。

    inserted: 被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于 document 中)。

    update: 被绑定元素所在的模板更新时调用,而不论绑定值是否变化。通过比较更新前后的绑定值,可以忽略不必要的模板更新(详细的钩子函数参数见下)。

    componentUpdated: 被绑定元素所在模板完成一次更新周期时调用。

    unbind: 只调用一次, 指令与元素解绑时调用。



本人菜鸟型,看官网蒙圈,然后百度Vue.directive()的实例和用法,有的很高深,有的不健全,我贴上两个简单的demo,希望对看到的朋友有帮助:

1、官网给出的demo,刷新页面input自动获取焦点:

   


        
   



    // 注册一个全局自定义指令 v-focus
    Vue.directive('focus', {
          // 当绑定元素插入到 DOM 中。
          inserted: function (el,binding) {
                // 聚焦元素
                el.focus();
         }
    });
     
    new Vue({
      el:'#app'
    });


2、一个拖拽的demo:

1)被拖拽的元素必须用position定位,才能被拖动;

2)自定义指令完成后需要实例化Vue,挂载元素;

3)inserted: 被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于 document 中)。

   
     
   

        
拖拽one

        
拖拽two

   




    Vue.directive('drag', {
        inserted:function(el){
            el.οnmοusedοwn=function(e){
                let l=e.clientX-el.offsetLeft;
                let t=e.clientY-el.offsetTop;
                document.οnmοusemοve=function(e){
                    el.style.left=e.clientX-l+'px';
                    el.style.top=e.clientY-t+'px';
                };
                el.οnmοuseup=function(){
                    document.οnmοusemοve=null;
                    el.οnmοuseup=null;
                }
            }
        }
    })
    new Vue({
      el:'#app'
    });

转载于:https://www.cnblogs.com/smile-fanyin/p/10953627.html

你可能感兴趣的:(Vue.directive()的用法和实例)