vue directive 控制输入框只能输入数字类型

export default {
  install(Vue) {
    Vue.directive('is-number', {
      bind(el, binding, vnode) {
        let input = el.getElementsByTagName('input')
        input[0].addEventListener('blur', (e) => {
          if (isNaN(vnode.componentInstance.value)) {
            e.target.value = ''
            let event = document.createEvent('HTMLEvents')
            event.initEvent('input', true, true)
            input[0].dispatchEvent(event)
          }
        })
      },
    })
  },
}

如果直接修改vue实例中的值会抛出警告,所以通过触发input event的方式修改实例中的值