首頁  >  文章  >  web前端  >  vue.js怎麼取得dom

vue.js怎麼取得dom

coldplay.xixi
coldplay.xixi原創
2020-11-10 11:02:572693瀏覽

vue.js取得dom的方法:1、給html中原始標籤對或子元件中定義ref屬性,在【mounted(){}】方法後使用【this.$refs】取得DOM元素;2、mounted對組件的內容進行了修改後繼續用【this.$refs】。

vue.js怎麼取得dom

【相關文章推薦:vue.js

vue.js取得dom的方法:

  • 給html中原始標籤對或子元件中定義ref屬性,在mounted(){}方法或此方法後使用this.$refs.具體的ref值來取得DOM元素。因為使用mounted以前的鉤子函數時,還未將組件掛載到DOM上,自然也無法通過$refs獲取DOM上的元素;

  • 需要區分的是,打印this .$refs.具體的ref值, 若是原始標籤對則輸出的結果是原始標籤對,若ref屬性在子組件標籤中,則輸出的是組件對象,而不是組件對應template中的內容;

  • this.$refs 輸出的是目前元件中包含的定義了ref屬性的標籤或子元件的集合;

  • 在元件渲染過程中,如mounted期間對組件的內容進行了修改後繼續用this.$refs.被修改組件對應的ref,這個時候獲取的是修改之前的DOM元素,為了獲取修改之後的DOM元素,必須使用this.$nextTick()方法,並在該方法的回調函數中使用this.$refs,此時便是獲取到修改之後的DOM元素。當然要取得修改之後的DOM元素可以在updated函數下,但是在某些具體的場景下需要在mounted中取得修改後的DOM元素;

<!DOCTYPE html>
<html>
<head>
<meta charset=&#39;utf-8&#39;>
<title>Vue组件中获取DOM元素的方式之$refs的使用</title>
</head>
<body>
<div id=&#39;app&#39;></div>
<script type=&#39;text/javascript&#39; src=&#39;node_modules/vue/dist/vue.js&#39;></script>
<script type=&#39;text/javascript&#39;>
Vue.component(&#39;Btn&#39;,{
template:`
<button>我是按钮</button>
`
})
let App = {
data:function() {
return {
isShow:false
}
},
template:`
<div>
<input type=&#39;text&#39; ref=&#39;input1&#39;/>
<input type=&#39;text&#39; ref=&#39;input2&#39; v-show=&#39;isShow&#39;/>
<Btn ref=&#39;btn1&#39;/>
</div>
`,
//对应输出结果为下面第一张图
// mounted:function() {
// console.log(this.$refs)
// console.log(this.$refs.input1)
// console.log(this.$refs.input2)
// console.log(this.$refs.btn1)
// }
mounted:function() {
// 修改ref=input2的v-show值,让其显示, 接着获取该DOM并让其获得焦点,但是没法获得焦点,这是因为mounted内无法获得更新DOM后的DOM元素,这个时候需要调用this.$nextTick方法,在其回掉函数中重新执行代码this.$refs.input2.focus()
this.isShow = true
// this.$refs.input2.focus()
this.$nextTick(function() {
this.$refs.input2.focus()
})
},
}
let  vm = new Vue({
el:&#39;#app&#39;,
data:function() {
return {
}
},
components:{
App
},
template:`
<App/>
`
})
</script>
</body>
</html>

對應已註解mounted中的內容

vue.js怎麼取得dom

mounted中對this.$nextTick的使用使得mounted中可以獲得已更新的DOM元素。在本程式碼中讓已更新的DOM元素獲得焦點

vue.js怎麼取得dom

相關免費學習推薦:javascript(影片)

以上是vue.js怎麼取得dom的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn