在vue的v-for循环中,实现点击按钮,实现获取对应的输入框焦点。
1、通过按钮的点击事件触发函数,来使得输入框聚焦
1.1、需求:
点击按钮,实现获取对应的输入框焦点。
1.2、函数逻辑:
点击按钮,获取到目标input的dom节点,对目标input调用获取焦点方法focus()
。
1.3、实例
普通情况下比较简单,下面我们要讨论的情况是:
使用vue的v-for来动态生成多个input
和button
的组合,使得点击每个button
会聚焦其对应的input
。
<template>
<div v-for:"item in data">
<!--在input框中我们要做的就是设置 ref -->
<input :ref="item.refFocus"/>
<button @click="switchEditState(item)">点击</button>
</div>
</template>
<script>
export default{
methods: {
switchEditState(obj) {
// 通过对目标dom调用focus方法,实现点击聚焦到当前行的输入框
this.$nextTick(() => {
//注意[0]
this.$refs[obj.refFocus][0].focus();
});
},
}
</script>
Esp:在vue中用v-for循环来动态绑定:ref,在循环结束后,实际生成的是一个「ref数组」,所以若打印this.$refs[obj.refFocus
,会发现结果是一个数组。而数组是无法调用focus()
方法的,所以需要我们记得去通过下标访问。
ref的本质用法是获取本页面的dom元素,如在标签中使用ref="abc"
,然后就可以通过this.$refs['abc']
或this.$refs.abc
获取