<template>
<div>
<div class="inputs" v-for="input in inputs" :key="input.id">
<input type="text" v-model="input.name" :ref="'name' + input.id">
<button @click="displayRef('name' + input.id)">
Click to see the input ref
</button>
<hr>
<button @click="displayAllRefs">Click to see all refs</button>
</div>
</div>
</template>
字符串 还有剧本:
<script>
export default {
data() {
return {
inputs: [
{ id: Date.now(), name: '', lastName: '' }
]
}
},
methods: {
displayRef(ref) {
console.log(this.$refs[ref]) // <= accessing the dynamic ref
console.log('The value of input is:',this.$refs[ref][0].value) //<= outpouting value of input
},
displayAllRefs() {
console.log(this.$refs)
}
}
}
</script>
4条答案
按热度按时间r1zk6ea11#
只需像
:ref="'element' + result.id"
或ref="
element${result.id}"
那样使用虚拟绑定。检查fiddle here。“
个字符
编辑:感谢Vamsi的编辑,我用
result.id
替换了index
编辑8/28:感谢grokpot,我添加了一个由Template literal提供支持的示例。
i34xakig2#
使用
v-bind:ref
或:ref
。下面是一个简单的示例,包括如何访问动态
ref
字符串
还有剧本:
型
11dmarpk3#
你有动态的引用和多个元素。
个字符
rslzwgfq4#
Vue 3.2.47+的更新:如果你特别需要访问
v-for
的元素,你可以直接将ref
附加到一个数组:(docs).示例代码字符串
如果您的
v-for
是一个自定义组件列表,请确保使用defineExpose对expose any fields or functions you need进行操作。如果你还需要引用列表保持相同的顺序,我发现this answer非常有用。