自定义指令

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>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 225,641评论 6 525
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,754评论 3 408
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 173,075评论 0 370
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 61,369评论 1 303
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 70,386评论 6 402
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,800评论 1 317
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,122评论 3 431
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 41,130评论 0 281
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,689评论 1 327
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,693评论 3 348
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,804评论 1 356
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,399评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,128评论 3 341
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,528评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,705评论 1 278
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,409评论 3 383
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,878评论 2 368

推荐阅读更多精彩内容