需要获取每一个el-input的组件实例,加聚焦事件,情况如下:
<el-table :data="attrParams.attrValueList" border style="margin: 10px 0"> ...... <el-table-column label="序号" width="80px" type="index" align="center"></el-table-column> <el-table-column label="attrValue"> <template #="{ row, $index }"> // 这里需要给每个el-input加个聚焦事件,需要获取每一个的el-input的组件实例 <el-input v-if="row.flag" v-model="row.valueName" placeholder="Please input you valuename..." @blur="toLook(row, $index)"></el-input> <div v-else @click="toEdit(row, $index)">{{ row.valueName }}</div> </template> </el-table-column> ...... </el-table>
我想了很多办法,以目前的知识水平是不行的呢....
后来发现ref可以写成函数的形式,简直震惊我一年啊
<el-table :data="attrParams.attrValueList" border style="margin: 10px 0"> ...... <el-table-column label="序号" width="80px" type="index" align="center"></el-table-column> <el-table-column label="attrValue"> <template #="{ row, $index }"> // 这里需要给每个el-input加个聚焦事件,需要获取每一个的el-input的组件实例 // :ref="((vc: any) => inputArr[$index] = vc)" vc就是el-input组件实例 <el-input :ref="((vc: any) => inputArr[$index] = vc)" v-if="row.flag" v-model="row.valueName" placeholder="Please input you valuename..." @blur="toLook(row, $index)"></el-input> <div v-else @click="toEdit(row, $index)">{{ row.valueName }}</div> </template> </el-table-column> ...... </el-table>
不过是需要配合nextTick使用的,确保el-input组件实例渲染完成再聚焦,如下:
// 添加属性值
const addAttrValue = () => {
......
// 获取最后的input框聚焦
nextTick(() => {
inputArr.value[attrParams.attrValueList.length - 1].focus()
})
}
ref还可以这么使用,我勒个乖乖,涨姿势了............