zoukankan      html  css  js  c++  java
  • vue基础----自定义组件directive ,bind,update,insert

    <div id="app">
            <input type="text" v-limit.3="msg" v-focus>
        </div>
        <script src="./node_modules/vue/dist/vue.js"></script>
        <script>
             Vue.directive("focus",{
               /* 方法一*/  
               /*
                bind(el){
                    Vue.nextTick(function(){ // 在dom元素执行完之后执行 
                        el.focus();
                    });
                }*/
                /* 方法二 */   
                inserted(el){ //绑定元素插入父节点时调用
                    el.focus();
                }
             });
    
           Vue.directive("limit",function(el,bindings,vnode){
               /*
                    el:元素
                    bindings:元素绑定的值
                    vue dom的更新是异步的
               */
               console.log(el);
               console.log(bindings);
               console.log(vnode);
               let [,len] = bindings.rawName.split(".");
               /*思想就是 把在文本框输入的值手动改到虚拟dom中,在虚拟dom 中改变 vlaue的值*/
               let ctx = vnode.context;
               el.addEventListener("input",(e)=>{
                    let val = e.target.value.slice(0,len)
                    ctx[bindings.expression] = val;
                    console.log("ctx:",ctx[bindings.expression]);
                    el.value = val;
                });
             //   el.value = ctx[bindings.expression].slice(0,len);
            });
    
            /*
            Vue.directive("limit",{
                //初始化的时候绑定
                bind(el,bindings,vnode) {
                    let ctx = vnode.context;
                    ctx[bindings.expression]= el.value.slice(0,5);
                },
                //数据更新的时候绑定
                update(el,bindings,vnode) {
                    let ctx = vnode.context;
                    ctx[bindings.expression]= el.value.slice(0,5);
                }
            });
            */
            let vm = new Vue({
                el:"#app",
                data:{
                    msg:"hello vue"
                }
            });
        </script>
  • 相关阅读:
    EOF:getchar()函数返回的一个特殊值
    elementUI的el-select使用filterable无效
    element table单元格相关的样式
    关于前端权限的一点想法--续
    IE浏览器与PDF文件
    vue form表单数据无法修改
    computed数据变动,table加载不全
    vue插件开发(本地使用)
    element table
    对象删除(消耗时间验证)
  • 原文地址:https://www.cnblogs.com/moon-yyl/p/11755147.html
Copyright © 2011-2022 走看看