// 注册一个全局自定义指令 `v-focus`
Vue.directive('focus', {
  // 当被绑定的元素插入到 DOM 中时……
  inserted: function (el) {
    // 聚焦元素
    el.focus()
  }
})


然后你可以在模板中任何元素上使用新的 v-focus 属性,如下:

<input v-focus>

经过打断点发现,i-input中通过v-focus进来的el参数并非是input元素,而是父级div元素,代码改成下面就好了

Vue.directive('focus', {
  // 当被绑定的元素插入到 DOM 中时……
  inserted: function (el) {
    if(el.tagName.toLocaleLowerCase() == 'input'){
      el.focus()
    }else{
      if(el.getElementsByTagName('input')){
        el.getElementsByTagName('input')[0].focus()
      }
    } 
  }
})

 

Logo

前往低代码交流专区

更多推荐