自定义对象

Vue官方文档:自定义指令 — Vue.js

(1) 注册全局指令:

Vue.directive(“自定义指令名称”,{

  Inserted (el,binding) {

    //el表示使用此指令的DOM元素,binding可获取此指令的绑定值

} )

  

(2)注册局部指令:

new Vue({

  directives: {

    “自定义指令名”:{  //指令名不要带v-

      Instered(el,binding) {

    }

  }

})

(3) 使用指令:引用指令时,指令前面加v-;直接在元素使用上,v-指令名 = “表达式”

<body>
 
    <script src="./node_modules/vue/dist/vue.js"></script>
 
    <div id="app">
 
        <!-- v- 属于固定使用 -->
 
        <!-- 自定义指令名称时最好使用添加-的形式,驼峰式命名在使用时也需要改为添加-的形式 -->
 
        <p v-upper-text="message">xxxxx</p>
 
        自动获取焦点:
 
        <!-- 指令名称为focus 使用时加v- -->
 
        <input type="text" v-focus>
 
    </div>
 
    <script>
 
        // 注册全局自定义指令
 
        // 在vue实例上注册vue自定义指令
 
        // 第一个参数式指令名称,自定义的,第二个参数是对象,对象存在钩子函数,钩子函数自动调用
 
        Vue.directive("upper-text",{
 
            //自定义指令的钩子函数自动调用
 
            // bind:只调用一次,指令第一次绑定到元素时调用
 
            // 一般对样式的操作放到bind里面
 
            bind (el, bindings,vnode){
 
                // 输出时字体颜色变成黄色
 
                el.style.color = "yellow"
 
            },
 
            // inserted:被绑定元素插入父节点时调用(仅保证父节点存在,但不一定已经被插入文档中)
 
            // 一般对JS的操作一般放到inserted钩子中
 
            // binding钩子函数的参数,一个对象
 
            inserted (el, binding, vnode){
 
                console.log(binding, vnode.context); // 需要测试vnode.context里面的内容
 
                // 转换成大写,输出时字母变成大写
 
                el.innerHTML = binding.value.toUpperCase();
 
                // el.innerHTML = binding.name.toUpperCase();
 
            }
 
        })
 
        new Vue({
 
            el:"#app",
 
            data:{
 
                message:'abc,测试数据',
 
            },
 
            // 注册局部的自定义指令
 
            directives:{
 
                "focus":{
 
                    inserted (el,binding){
 
                        el.focus()
 
                    }
 
                }
 
            }
 
        })
 
    </script>
 
</body>

 

 

 

 


 

下面是常见的自定义指令举例:

图片懒加载 v-lazy

防抖 v-debounce

按钮权限 v-has

拖拽指令 v-draggable  /mousemove / mouseup / mousedown / dragenter /dragover /drop。  可视化拖拽编辑器

点击事件处理  v-click-outside

 

posted @ 2023-03-28 18:22  front-gl  阅读(23)  评论(0编辑  收藏  举报