Vue Template Refs are used to refer to specific DOM elements.
When the ref
attribute is set on an HTML tag, the resulting DOM element is added to the $refs
object.
We can use the ref
attribute and the $refs
object in Vue as an alternative to methods in plain JavaScript like getElementById() or querySelector().
HTML tags with the ref
attribute will be added to the $refs
object and can be reached later from inside the <script>
tag.
The text inside a <p>
element is changed.
App.vue
:
<template>
<h1>Example</h1>
<p>Click the button to put "Hello!" as the text in the green p element.</p>
<button @click="changeVal">Change Text</button>
<p ref="pEl">This is the initial text</p>
</template>
<script>
export default {
methods: {
changeVal() {
this.$refs.pEl.innerHTML = "Hello!";
}
}
}
</script>
Run Example »
Below is another example where the $refs
object is used to copy the value of one tag into another tag.
The text from the first <p>
tag is copied into the second <p>
tag.
App.vue
:
<template>
<h1>Example</h1>
<p ref="p1">Click the button to copy this text into the paragraph below.</p>
<button @click="transferText">Transfer text</button>
<p ref="p2">...</p>
</template>
<script>
export default {
methods: {
transferText() {
this.$refs.p2.innerHTML = this.$refs.p1.innerHTML;
}
}
};
</script>
Run Example »
We can go further into an HTML element added to the $refs
object to access any property we want.
A <p>
element gets the same content as what's being written in the input field.
App.vue
:
<template>
<h1>Example</h1>
<p>Start writing inside the input element, and the text will be copied into the last paragraph by the use of the '$refs' object.</p>
<input ref="inputEl" @input="getRefs" placeholder="Write something..">
<p ref="pEl"></p>
</template>
<script>
export default {
methods: {
getRefs() {
this.$refs.pEl.innerHTML = this.$refs.inputEl.value;
}
}
};
</script>
Run Example »
HTML elements created with v-for
, with the ref
attribute, will be added to the $refs
object as an array.
The button reveals the the third list element stored as an array element inside the $refs
object.
App.vue
:
<template>
<h1>Example</h1>
<p>Click the button to reveal the 3rd list element stored as an array element in the $refs object.</p>
<button @click="getValue">Get the 3rd list element</button><br>
<ul>
<li v-for="x in liTexts" ref="liEl">{{ x }}</li>
</ul>
<pre>{{ thirdEl }}</pre>
</template>
<script>
export default {
data() {
return {
thirdEl: ' ',
liTexts: ['Apple','Banana','Kiwi','Tomato','Lichi']
}
},
methods: {
getValue() {
this.thirdEl = this.$refs.liEl[2].innerHTML;
console.log("this.$refs.liEl = ",this.$refs.liEl);
}
}
};
</script>
<style>
pre {
background-color: lightgreen;
display: inline-block;
}
</style>
Run Example »
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!