• 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自动获取焦点:

        <div id="app">
            <input type="text" v-focus/>
        </div>


        // 注册一个全局自定义指令 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 中)。

        <style type="text/css">
            .one,.two{
                height:100px;
                100px;
                border:1px solid #000;
                position: absolute;
                -webkit-user-select: none;
                -ms-user-select: none;
                -moz-user-select: -moz-none;
                cursor: pointer;
            }
            .two{
                left:200px;
            }
        </style>
         
        <div id="app">
            <div class="one" v-drag>拖拽one</div>
            <div class="two" v-drag>拖拽two</div>
        </div>



        Vue.directive('drag', {
            inserted:function(el){
                el.onmousedown=function(e){
                    let l=e.clientX-el.offsetLeft;
                    let t=e.clientY-el.offsetTop;
                    document.onmousemove=function(e){
                        el.style.left=e.clientX-l+'px';
                        el.style.top=e.clientY-t+'px';
                    };
                    el.onmouseup=function(){
                        document.onmousemove=null;
                        el.onmouseup=null;
                    }
                }
            }
        })
        new Vue({
          el:'#app'
        });

  • 相关阅读:
    libevent中的基本数据结构---queue.h
    TCP 连接关闭及TIME_WAIT探究
    网络程序中常用的三种心跳机制----服务器端
    TCP程序中发送和接收数据
    如何编写一个稳定的网络程序(TCP)
    Linux 编程--三种常用的定时器
    Libevent 事件循环(2)---事件被加入激活队列
    单机千万并发连接实战(修订版)
    千万并发连接实战
    kqueue例子
  • 原文地址:https://www.cnblogs.com/smile-fanyin/p/10953627.html
Copyright © 2020-2023  润新知