vue自定義指令

呔, 用了倆年vue 竟然沒(méi)怎么用過(guò)自定義指令, 面試問(wèn)到了就找個(gè)幾個(gè)常用的
實(shí)現(xiàn)按鈕權(quán)限的自定義指令 v-permission="code"

Vue.directive("permission", {
  inserted(el, binding) {
    let { value } = binding
    let res = roleList.some((it) => {
      return it && it == value
    })
    if (!res) {
      el.style.display = 'none'
    }
  }
})

<div style="width: 200px;">
   <el-input v-model="input" placeholder="請(qǐng)輸入內(nèi)容" v-focus v-permission="7"></el-input>
   <el-button type="info" v-permission="5">權(quán)限按鈕</el-button>
</div>

防止按鈕頻繁被點(diǎn)擊的自定義指令 v-preventReClick="time"

Vue.directive("preventReClick", {
      inserted(el, binding) {
          el.addEventListener("click", () => {
              if (!el.disabled) {
                  el.disabled = true;
                  setTimeout(() => {
                      el.disabled = false;
                  }, binding.value || 1000);
              }
          });
      }
  });

<el-button type="primary" v-preventReClick="5000" @click="test">主要按鈕</el-button>

input自動(dòng)聚焦的自定義指令 v-focus

Vue.directive('focus', {
    inserted: function (el,  binding) {
      let input = el.querySelector("input"); 
      input.focus()
    }
})

<el-input v-model="input" placeholder="請(qǐng)輸入內(nèi)容" v-focus ></el-input>
批量注冊(cè)自定義指令
import copy from './v-copy';
// 自定義指令
const directives = {
  copy,
};
// 這種寫(xiě)法可以批量注冊(cè)指令
export default {
  install(Vue) {
    Object.keys(directives).forEach((key) => {
      Vue.directive(key, directives[key]);
    });
  },
};
最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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