zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    6 网络爬虫引发的问题及Robots协议
    WEB测试方法总结-笔记(转)
    最全的Http协议、get和post请求的整理
    random()函数的应用---面试
    求两个列表的交集、差集、并集---面试
    python中函数参数传递--引用传递(面试)
    linux重定向命令>和>>---面试
    正则表达式re.findall和re.search的使用---面试
    关于可迭代对象的详解
    sorted()函数排序的灵活运用---面试
  • 原文地址:https://www.cnblogs.com/zouzou-busy/p/11664480.html
Copyright © 2011-2022 走看看