zoukankan      html  css  js  c++  java
  • 自定义指令

    https://cn.vuejs.org/v2/guide/custom-directive.html

    用过 v-on 、v-model、v-show 等指令,在操作 dom 时使用了 ref 属性,其实之前学过的指令也是操作dom 的一种方式,但有时,这些指令并不能满足我们的需求,因此 vue 允许我们自定义指令来操作 dom

    全局自定义指令

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>vue 自定义指令</title>
        <!--这里因为方便,我直接使用cdn方式引入-->
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="app">
            <p v-setcolor>自定义指令的使用</p>
        </div>
    </body>
    <script>
        // 注册一个全局自定义指令 `v-setcolor`
        Vue.directive('setcolor', {
            // 当被绑定的元素插入到 DOM 中时……
            inserted: function (el) {
                // 聚焦元素,el就是DOM对象
                el.style.color = 'red';
            }
        })
        var app = new Vue({
            el: '#app',
        })
    </script>
    </html>
    

    image-20201018141152509

    私有(局部)自定义指令

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>vue 自定义指令</title>
        <!--这里因为方便,我直接使用cdn方式引入-->
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="app">
            <p v-setcolor>自定义指令的使用</p>
        </div>
    </body>
    <script>
        var app = new Vue({
            el: '#app',
            // 注册 局部(私有)指令
            directives: {
                // 定义指令名称
                setcolor: {
                    // 当被绑定的元素插入到 DOM 中时……
                    inserted: function (el) {
                        // 聚焦元素
                        el.style.color = 'red';
                    }
                }
            }
        })
    </script>
    </html>
    

    image-20201018141450016

    自定义指令传值

    有的指令可以传值,有的则没有,而我们自定的指令中是没有值的,如果想为自定义指令赋值,如下即可:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>vue 自定义指令</title>
        <!--这里因为方便,我直接使用cdn方式引入-->
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="app">
            <p v-setcolor='colors'>自定义指令的使用</p>
        </div>
    </body>
    <script>
        var app = new Vue({
            el: '#app',
            data:{
                colors:'yellow'
            },
            // 注册 局部(私有)指令
            directives: {
                // 定义指令名称
                setcolor: {
                    // 自定义指令可以接受第二个参数
                    inserted: function (el,val) {
                        // 第二个参数中包含了指令名称、挂载名称及数据键值
                        console.log(val);
                        // 聚焦元素
                        el.style.color = val.value;
                    }
                }
            }
        })
    </script>
    </html>
    

    image-20201018141712225

    钩子函数

    其实就是什么时候触发,触发都少次

    常用的就

    image-20201018142030349

    我们一般只用inserted

  • 相关阅读:
    [haoi2009]逆序对数列
    [haoi2008]木棍分割
    【LibreOJ 6277】数列分块入门 1 (分块)
    【模板】 最大流模板(ISAP)
    【模板】最大流模板(dinic)
    [模板] zkw线段树
    [luogu P1962] 斐波那契数列(带快速幂矩阵乘法模板)
    [SCOI2010] 股票交易 (单调队列优化dp)
    [luogu P2285] [HNOI2004]打鼹鼠
    [poj 2152] fire (树形dp)
  • 原文地址:https://www.cnblogs.com/makalochen/p/13834961.html
Copyright © 2011-2022 走看看