封装插件
import Vue from 'vue'
// 聚焦指令
Vue.directive('focus', {
// 第一次
inserted (e) {
focus(e)
},
// 除第一次以外
update (e) {
focus(e)
}
})
function focus (e) {
if (['INPUT', 'TEXTAREA'].indexOf(e.tagName) !== -1) {
e.focus()
} else {
let node = e.querySelector('input')
if (node) {
node.focus()
return
}
node = e.querySelector('textarea')
if (node) {
node.focus()
return
}
// 抛出错误
throw new Error('请把focus指令用在input或textarea上')
}
}
在main.js注册
import Vue from 'vue'
import App from './App.vue'
Vue.config.productionTip = false
// 引入插件
import '../directive/focus'
new Vue({
render: h => h(App),
}).$mount('#app')
使用 v-focus
<input type="text" v-focus />