首页 > 其他分享 >16_自定义指令

16_自定义指令

时间:2022-10-02 22:23:29浏览次数:50  
标签:自定义 16 big binding value element 指令 input

1.自定义指令

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>自定义指令</title>
        <script type="text/javascript" src="../js/vue.js"></script>
    </head>
    <body>
        <!-- 
                需求1:定义一个v-big指令,和v-text功能类似,但会把绑定的数值放大10倍。
                需求2:定义一个v-fbind指令,和v-bind功能类似,但可以让其所绑定的input元素默认获取焦点。
                自定义指令总结:
                        一、定义语法:
                                    (1).局部指令:
                                                new Vue({                                                            new Vue({
                                                    directives:{指令名:配置对象}   或           directives{指令名:回调函数}
                                                })                                                                         })
                                    (2).全局指令:
                                                    Vue.directive(指令名,配置对象) 或   Vue.directive(指令名,回调函数)

                        二、配置对象中常用的3个回调:
                                    (1).bind:指令与元素成功绑定时调用。
                                    (2).inserted:指令所在元素被插入页面时调用。
                                    (3).update:指令所在模板结构被重新解析时调用。

                        三、备注:
                                    1.指令定义时不加v-,但使用时要加v-;
                                    2.指令名如果是多个单词,要使用kebab-case命名方式,不要用camelCase命名。
        -->
        <!-- 准备好一个容器-->
        <div id="root">
            <h2>{{name}}</h2>
            <h2>当前的n值是:<span v-text="n"></span> </h2>
            <!-- <h2>放大10倍后的n值是:<span v-big-number="n"></span> </h2> -->
            <h2>放大10倍后的n值是:<span v-big="n"></span> </h2>
            <button @click="n++">点我n+1</button>
            <hr/>
            <input type="text" v-fbind:value="n">
        </div>
    </body>
    
    <script type="text/javascript">
        Vue.config.productionTip = false

        //定义全局指令
        /* Vue.directive('fbind',{
            //指令与元素成功绑定时(一上来)
            bind(element,binding){
                element.value = binding.value
            },
            //指令所在元素被插入页面时
            inserted(element,binding){
                element.focus()
            },
            //指令所在的模板被重新解析时
            update(element,binding){
                element.value = binding.value
            }
        }) */

        new Vue({
            el:'#root',
            data:{
                name:'尚硅谷',
                n:1
            },
            directives:{
                //big函数何时会被调用?1.指令与元素成功绑定时(一上来)。2.指令所在的模板被重新解析时。
                /* 'big-number'(element,binding){
                    // console.log('big')
                    element.innerText = binding.value * 10
                }, */
                big(element,binding){
                    console.log('big',this) //注意此处的this是window
                    // console.log('big')
                    element.innerText = binding.value * 10
                },
                fbind:{
                    //指令与元素成功绑定时(一上来)
                    bind(element,binding){
                        element.value = binding.value
                    },
                    //指令所在元素被插入页面时
                    inserted(element,binding){
                        element.focus()
                    },
                    //指令所在的模板被重新解析时
                    update(element,binding){
                        element.value = binding.value
                    }
                }
            }
        })
        
    </script>
</html>

 

2.回顾一个DOM操作

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>Document</title>
        <style>
            .demo{
                background-color: orange;
            }
        </style>
    </head>
    <body>
        <button id="btn">点我创建一个输入框</button>
        
        <script type="text/javascript" >
            const btn = document.getElementById('btn')
            btn.onclick = ()=>{
                const input = document.createElement('input')

                input.className = 'demo'
                input.value = 99
                input.onclick = ()=>{alert(1)}
                
                document.body.appendChild(input)

                input.focus()
                // input.parentElement.style.backgroundColor = 'skyblue'
                console.log(input.parentElement)
                
            }
        </script>
    </body>
</html>

 

标签:自定义,16,big,binding,value,element,指令,input
From: https://www.cnblogs.com/y593216/p/16749624.html

相关文章

  • 二进制和16进制互相转换
    privatestaticStringbyteToHex(byte[]bytes){StringBuilderhex=newStringBuilder();for(byteb:bytes){hex.append(HEX......
  • Mysql function 自定义函数,查找子节点
    ThisfunctionhasnoneofDETERMINISTIC,NOSQL,orREADSSQLDATAinitsdeclarationandbinaryloggingisenabled(you*might*wanttousethelesssafelog_......
  • 无题160226
    无题160226我一个人,不悲不喜只要不想你 我一个人,不愿悲伤我要不想你 关于你的词,还会继续你,也许不是你可是还会想起2016.2.26 整理以前的图片,偶然翻到。2015......
  • 关于Android SDK自定义目录始终无法下载谷歌包
      最近重装了一下系统,然后在配置安卓SDK自定义路径的时候突然遇到了一个小问题,就是在配置好tools之后通过调用sdkmanager--list的时候突然显示warning,并且无法显示所有......
  • 如何让intellij idea支持istio自定义资源
    intellijidea是目前最好的IDE工具,它的kubernetes插件原生支持kubernetesapi,但CDR自定义资源不是原生支持,我们在kubernetes应用过程中会遇到很多自定资源的,比如istio,......
  • 9-16cms审计
    title:9.16cms审计date:2022-09-1620:28:36tags:这里面学到了一点之前一直以为图片码的利用方式只有包含图片码才可以利用(因为include函数会自动的把文件当作ph......
  • 自定义映射resultMap
    resultMap处理字段和属性的映射关系如果字段名与实体类中的属性名不一致,该如何处理映射关系?第一种方法:为查询的字段设置别名,和属性名保持一致下面是实体类中的属性名:......
  • 自定义start
    1.新建项目atguigu-hello-spring-boot-starter,在pox.xml中导入自动配置atguigu-hello-spring-boot-starter-autoconfigure项目<dependencies><dependency>......
  • [LeetCode] 1316. Distinct Echo Substrings 不同的循环子字符串
    Returnthenumberof distinct non-emptysubstringsof text thatcanbewrittenastheconcatenationofsomestringwithitself(i.e.itcanbewrittenas......
  • 112-16-HBase DQL(查询数据) 源码核心实现深度分析_ev
           ......