Vue封装自定义指令focus

本文介绍如何在Vue中封装一个自定义指令`focus`,用于自动获取输入框焦点。通过Vue插件开发方式,提供两种实现:一是传入带有`install`方法的对象进行全局注册;二是直接传入函数体。实现代码包含在`directives.js`文件中,并在`main.js`中引入并全局注册。

Vue封装自定义指令focus

功能: 自动获取输入框焦点

方式: 采用Vue插件开发方式

方式1: 传入对象(带install方法) - 给Vue添加全局的东西(Vue插入插件)

方式2: 传入函数体

代码实现:

第一步:在utils文件夹下新建directives.js文件

import Vue from 'vue'
const obj = {
  install () {
    // Vue.prototype.$属性 = 值
    // 全局自定义指令
    Vue.directive('focus', {
      // v-focus标签被插入到真实DOM上,此方法才会执行
      inserted (el) { // el:指令所在的原生标签
        if (el.nadeName === 'INPUT' || el.nodeName === 'TEXTAREA') {
          el.focus()
        } else {
          // 如果不是原生的标签在获取一下内部input
          const inp = el.querySelector('input')
          const area = el.querySelector('textarea')
          if (inp.nodeName === 'INPUT' || area.nadeName === 'TEXTAREA') {
            if (inp.nodeName === 'INPUT') {
              inp.focus()
            } else {
              area.focus()
            }
          } else {
            console.error('指令请在输入框上使用')
          }
        }
      }
    })
  }
}
export default obj

使用: main.js文件引入全局注册

import directive from '@/utils/directives'
Vue.use(directive)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值