【问题标题】:Object is of type 'unknown' using focus() in vuejs $refs and ionic component在 vuejs $refs 和离子组件中使用 focus() 对象的类型为“未知”
【发布时间】:2022-07-27 21:10:55
【问题描述】:

我正在使用带有 vueJs TS 的 Ionic 框架。
我尝试使用 ref 以编程方式将焦点设置在 <ion-input>

<ion-input
              ref="todoItemLabel"
              placeholder="Task name"
              v-model="label"></ion-input>

我在控制器中用于聚焦的代码是

this.$refs.todoItemLabel.$el.focus()

问题是编译器给了我下一个错误:

Object is of type 'unknown'

这是什么原因,我该如何克服这个问题?

【问题讨论】:

    标签: typescript vue.js ionic-framework


    【解决方案1】:

    我很长时间都在努力寻找解决方案,所以我希望其他人会觉得这个答案有帮助。
    问题在于 Typescript 验证。
    我们需要定义对象类型才能使用它。

    所以为了使用 refs 对象的属性,我们需要告诉 TS 这是什么类型的对象。

    解决办法是:

    (this.$refs.todoItemLabel as InstanceType<typeof IonInput>).$el.focus()
    

    所以我们首先设置属性类型,而不是直接尝试访问.$el,以便 Typescript 知道如何使用它以及期望从中获得哪些属性。

    如果你对其他 Ionic 元素也有同样的问题,你只需要在这里设置它们: 即

    (this.$refs.todoItemLabel as InstanceType<typeof IONIC_COMPONENT_NAME>).$el.THE_ELEMENT_METHOD_TO_CALL()
    

    我希望它会节省其他人的时间:-)

    【讨论】:

      猜你喜欢
      • 2021-06-19
      • 2022-01-21
      • 1970-01-01
      • 2018-08-31
      • 2021-09-18
      • 2019-06-06
      • 1970-01-01
      • 2021-07-13
      • 2021-07-14
      相关资源
      最近更新 更多