将 $refs 与 Element UI 的输入组件一起使用

Using $refs with Element UI's input component

是否可以将 ref 与来自 Element-UI 的 el-input 组件一起使用?当我的 Vue 实例被安装时,我试图使用 $refs 来关注输入。这是我的代码:

<div id="app">
    <el-input type="text" ref="test" placeholder="enter text"></el-input>
</div>

在我的 Vue 实例中:

new Vue({
  el: "#app",
  mounted(){
    this.$refs.test.focus()
  }
})

focus 方法根本不起作用,即使我将 this.$refs.test.focus() 移动到方法中并尝试通过事件触发它也是如此。

$refs 对象存储 Vue 组件,应该可以正常工作。问题是您正在尝试调用一个 focus 方法,该方法 在组件 中不存在,而是在 输入 中组件模板内的某处。

因此,要真正找到输入,您必须执行如下操作:

this.$refs.test.$el.getElementsByTagName('input')[0].focus();

这不是有史以来最漂亮的代码行,对吧?因此,如果您想自动聚焦输入,而不是在应用的 mounted 方法中调用任何内容,只需执行以下操作:

<el-input type="text" placeholder="enter text" autofocus></el-input>

这也可以解决你的问题。

// Focus the component, but we have to wait
// so that it will be showing first.
   this.$nextTick(() => {
       this.$refs.inputText.focus();
   });

现在你可以这样使用了

<div id="app">
    <el-input type="text" ref="test" placeholder="enter text"></el-input>
</div>
this.$refs.test.focus();

https://element.eleme.io/#/en-US/component/input#input-methods