vue--自定义指令

自定义指令

除了内置指令外,Vue也允许注册自定义指令。有的情况下,你仍然需要对普通的DOM元素进行底层操作,这时候使用自定义指令更方便。

官方文档:https://cn.vuejs.org/v2/guide/custom-directive.html

全局指令

案例:将字母转为大写,颜色为红色

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="./node_modules/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        <p v-upper-text="msg">xxxxx</p>
        
    </div>
    
    <script>
        // 注册全局自定义指令,可以在多个Vue管理的入口下使用该指令
        // 第一个参数为指令名,但是不要有v-开头
        Vue.directive('upper-text',{
            //一般对样式 的操作在bind中,bind函数只调用一次
            bind: function (el) {
                el.style.color = 'red'
            },
            //一般对js操作在inserted中,inserted也是只调用一次
            // el是当前指令作用的那个Dom元素,
            // binding用于获取使用了当前指令的绑定值(value)、表达式(expression)、指令名(name)等
            inserted: function (el, binding) {
                // 将所有字母文本内容转换为大写
                el.innerHTML = binding.value.toUpperCase()
            }
        })


        new Vue({
            el: '#app',
            data: {
                msg: 'hello world'
            }
        })
    </script>
</body>
</html>
复制代码

局部指令

局部指令只能在当前vue实例中使用,如果有个id为app2的div,则不生效

案例:刷新之后自动获取输入框焦点

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="./node_modules/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        自动获取焦点:<input type="text" v-focus>
    </div>
    
    
    <script>

        new Vue({
            el: '#app',
            data: {
                message: 'hello world'
            },
            //注册局部自定义指令:只能在当前Vue实例管理的入口 下引用这个指令
            directives: {
                'focus': { // 指令名,
                    bind: function () {

                    },
                    // 刷新页面自动获取焦点
                    inserted: function (el, binding) {
                        //被 v-focus 作用的那个元素在刷新页面后会自动 获取焦点
                        el.focus()
                    }
                }
            }
        })

     
    </script>
</body>
</html>
复制代码
posted @   邹邹很busy。  阅读(313)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示

目录导航