Vue是一款流行的JavaScript框架,它提供了許多方便的API來操作HTML DOM。在Vue中獲取HTML DOM元素非常簡單,僅需使用ref指令即可。
<template>
<div>
<input type="text" ref="inputElement">
<button @click="onButtonClick">獲取input元素</button>
</div>
</template>
<script>
export default {
methods: {
onButtonClick() {
const inputElement = this.$refs.inputElement;
console.log(inputElement); // 輸出獲取到的input元素
}
}
}
</script>
如上代碼所示,在模板中的input元素上添加了ref屬性,并設置為"inputElement"。在JavaScript代碼中,可以通過this.$refs.inputElement獲取到該元素的DOM節點。
vue2.0之前可以直接使用$refs獲取,vue2.0之后為了防止組件中引用的DOM發生混亂,不再支持直接使用$refs獲取。如果需要獲取子組件內的DOM節點,需使用$refs實例屬性,詳見下方示例:
<template>
<div>
<child-component ref="child"></child-component>
<button @click="onButtonClick">獲取子組件中的input元素</button>
</div>
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
components: {
ChildComponent
},
methods: {
onButtonClick() {
const inputElement = this.$refs.child.$refs.inputElement;
console.log(inputElement); // 輸出獲取到的input元素
}
}
}
</script>
在子組件中,同樣需要使用ref聲明DOM節點,并在父組件中通過$refs.child獲取到該組件實例,再通過$refs.child.$refs.inputElement獲取到子組件中的input元素節點。
總的來說,通過ref指令可以很方便地獲取到HTML DOM元素節點,而在Vue中獲取子組件中的節點,需要使用實例屬性$refs。
上一篇json拒納