vue自定義指令

自定義指令實(shí)現(xiàn)

  • 參數(shù)1——指令的名稱,注意:在定義的時(shí)候,指令的名稱前面,不需要加 v- 前綴,而在調(diào)用的時(shí)候,必須在指令名稱前 加上 v- 前綴來進(jìn)行調(diào)用
  • 參數(shù)2:是一個(gè)對(duì)象,這個(gè)對(duì)象身上,有一些指令相關(guān)的函數(shù),這些函數(shù)可以在特定的階段,執(zhí)行相關(guān)的操作
  • 參數(shù)2中涉及到的鉤子函數(shù)
    1、bind() 一次執(zhí)行 調(diào)用是在指令綁定到元素上的時(shí)候執(zhí)行,這時(shí)還沒有進(jìn)行dom插入
    2、insert() 一次執(zhí)行 調(diào)用時(shí)在元素插入到dom中的時(shí)候會(huì)執(zhí)行此函數(shù)
    3、update() 多次執(zhí)行 調(diào)用時(shí)在每次vnode更新時(shí)
    4、componentUpdate 指令所在的組件的VNode以及其子VNode 全部更新后調(diào)用
    5、unbind: 指令和元素解綁的時(shí)候調(diào)用,只調(diào)用一次
  • binding對(duì)象
    1、name : v-gqs ==> gqs 不包括前面的v-
    2、valule : 指令后面的值 v-gqs='abc' value=abc
    3、oldValue 前一個(gè)值,只能在 update & componentUpdate 中使用.
    4、expression : v-gqs='1+1',如果是 value = 2 ,如果是 expression = 1 + 1
    5、arg: 指令傳遞的參數(shù) ,比如 v-gqs:hello arg = hello
    6、modifiers : 比如 v-gqs.a.b modifiers = {a:true,b:true}

注意:在每個(gè)函數(shù)中,第一個(gè)參數(shù),永遠(yuǎn)是 el ,表示被綁定了指令的那個(gè)元素,這個(gè)el參數(shù),是一個(gè)原生的JS 對(duì)象

全局定義

Vue.directive('focus',{
             bind:function(el,binding){
                // el.style.color = 'red';
                // 和樣式相關(guān)的操作,一般都可以在 bind 中執(zhí)行,因?yàn)橐粋€(gè)指令被綁定的時(shí)候,該元素已經(jīng)存在,可以修改它的樣式

                el.style.color = binding.value
            }
            inserted:function(el){ 
                el.focus() 
                // 和JS 行為有關(guān)的操作,最好在inserted 中去執(zhí)行,防止 JS 不生效
            },
            updated:function(el){}
        })

局部自定義私有指令

directives:{
     'fontweight':{
         bind:function(el,binding){
            el.style.fontWeight = binding.value
          }
      },


      // ** 這個(gè) function 等同于 把 代碼寫到了 bind 和 update 中去
      'fontsize':function(el,binding){
          el.style.fontSize = parseInt(binding.value) + 'px'
       }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 自定義指令 Vue是不建議大家直接操作DOM的,但是Vue 允許你注冊(cè)自定義指令,實(shí)質(zhì)上是讓你教 Vue 一些新技...
    EmilioWeng閱讀 345評(píng)論 0 0
  • Vue指令 Vue的指令以v-開頭,作用在HTML元素上,將指令綁定在元素上,給綁定的元素添加一些特殊行為。 例如...
    syd192閱讀 1,369評(píng)論 0 9
  • 簡(jiǎn)介 除了核心功能默認(rèn)內(nèi)置的指令,Vue也可以注冊(cè)自定義指令。注意,在Vue2.0中,代碼復(fù)用和抽象的主要形式是組...
    Sunshine_0676閱讀 394評(píng)論 1 1
  • >> 閱讀官網(wǎng) 當(dāng)頁(yè)面加載時(shí),元素將獲得焦點(diǎn) (注意:autofocus 在移動(dòng)版 Safari 上不工作)。事實(shí)...
    竹小星閱讀 472評(píng)論 2 3
  • 源自:https://cn.vuejs.org/v2/guide/index.html 鉤子函數(shù) 一個(gè)指令定義對(duì)象...
    小火球燒屁股閱讀 264評(píng)論 0 0

友情鏈接更多精彩內(nèi)容