vuejs取得dom的方法:1、在元件的DOM部分,任意標籤中寫上「ref="xxx"」;2、透過元件物件「this.$refs.xxx」取得到元素即可。
本文操作環境:windows7系統、vue2.9.6版,DELL G3電腦。
Vue.js實例學習:取得DOM元素
在Vue中取得DOM元素,我們可以用ref
。
用法(和React一樣):
(1)在元件的DOM部分,任意標籤中寫上:ref="xxx"#
## (2)透過元件物件
this.$refs.xxx 取得到元素
說明:mounted()時才能取得this.$refs.btn
我們看到控制台
輸出的
是
temp元件。
這裡我們要關注的是元件的各個屬性(eg: $ el、$ parent 等)···
console.log(this.$refs.tmp.$el);控制台會輸出下圖,由此可知$el 代表著什麼~
運行後報錯:
報錯顯示focus不存在,原因是this. $refs.myInput
也是undefined,為什麼ref沒取得DOM元素呢? 我們先思考,如果我們把mounted函數內改成:
mounted() { this.isShow = true; this.isShow = false; this.isShow = true; },
運行過程中,input元素會 先顯示,再消失,然後再顯示嗎?
答案是否定的。因為Vue會先讓程式碼執行完,然後才會依照最終的值,進行DOM操作。
其實上面的程式碼等同於下面的程式碼:
那麼要怎麼解決呢? mounted() {
this.isShow = true;
},
這裡我們用
$nextTick解決~
this.$nextTick(function() {
·····dosomething
})
let App = { template: ``, data() { return { isShow: false, }; }, mounted() { //显示input元素的瞬间,获取焦点 this.isShow = true; this.$nextTick(function() { this.$refs.myInput.focus(); }); }, }; let vm = new Vue({ el: '#app', components: { app: App }, template: ``, });
以上是vuejs裡怎麼取得dom的詳細內容。更多資訊請關注PHP中文網其他相關文章!