vue中關(guān)于this.refs為空出現(xiàn)原因及分析
vue關(guān)于this.refs為空出現(xiàn)原因分析
場景
在使用vue過程中,本想調(diào)用子組件的數(shù)據(jù),但嘗試多次一直獲取失敗。
經(jīng)過分析有以下原因

1、在生命周期mounted之前的鉤子函數(shù)中去調(diào)用會獲取不到,原因是DOM節(jié)點都沒有生成。
2 、this.refs的組件在v-if為false的父節(jié)點下,導(dǎo)致這個子組件未渲染,所以獲取不到。
注意
一定是組件已經(jīng)渲染成功才能調(diào)用組件的數(shù)據(jù)。而不是頁面加載完成后就一定能獲取到
vue this.$refs的使用
案例一、ref 寫在標簽上時
<!-- ref 寫在標簽上時:this.$refs.名字 獲取的是標簽對應(yīng)的dom元素
ref 寫在組件上時:這時候獲取到的是 子組件(比如counter)的引用-->
<div id="root">
<!-- ref = 'hello': 給div 起了一個引用的名字 hello -->
<div
ref = 'hello'
@click = "handleClick">
laugh yourself
</div>
</div>
<script>
var vm = new Vue({
el: '#root',
methods: {
handleClick: function() {
//this.$refs : 獲取整個Vue實例中所有的引用 然后再找到hello這個引用 指向div那個dom節(jié)點
//console.log(this.$refs.hello)
alert(this.$refs.hello.innerHTML)
}
}
})
</script>案例二、 ref 寫在組件上時
計數(shù):
<!-- ref 寫在標簽上時:this.$refs.名字 獲取的是標簽對應(yīng)的dom元素
ref 寫在組件上時:這時候獲取到的是 子組件(比如counter)的引用-->
<div id="root">
<!-- 子組件觸發(fā)了事件 這里父組件(模板區(qū)里面)監(jiān)聽該事件 調(diào)用handleChange方法
因此handleChange方法定義在父組件的methods里面-->
<counter ref="one" @change="handleChange"></counter>
<counter ref="two" @change="handleChange"></counter>
<div>{{total}}</div>
</div>
<script>
Vue.component('counter', {
template: '<div @click="handleClick"> {{number}} </div>',
data: function() {
return {
number: 0
}
},
methods: {
handleClick: function() {
this.number ++
//子組件向父組件傳值 子組件被點擊的時候 number+1 同時告訴外面 也即是觸發(fā)一個事件
this.$emit('change')
}
},
})
var vm = new Vue({
el: '#root',
data: {
total: 0
},
methods: {
handleChange: function() {
//在此方法中計算兩個數(shù)量的和 通過this.$refs.引用名字 獲取兩個子組件的引用
this.total = this.$refs.one.number +
this.$refs.two.number
}
}
})
</script>
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue利用better-scroll實現(xiàn)輪播圖與頁面滾動詳解
在我們?nèi)粘5捻椖块_發(fā)中,處理滾動和輪播圖是再常見不過的需求了,下面這篇文章主要給大家介紹了關(guān)于vue利用better-scroll實現(xiàn)輪播圖與頁面滾動的相關(guān)資料,文中給出了詳細的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面來一起看看吧。2017-10-10
vue使用el-upload上傳文件及Feign服務(wù)間傳遞文件的方法
這篇文章主要介紹了vue使用el-upload上傳文件及Feign服務(wù)間傳遞文件的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-03-03
Vue.js中實現(xiàn)密碼修改及頁面跳轉(zhuǎn)和刷新的完整指南
在現(xiàn)代Web應(yīng)用中,用戶賬戶管理是一個核心功能,其中密碼修改是一個常見的需求,本文將詳細介紹如何在Vue.js應(yīng)用中實現(xiàn)用戶密碼修改功能,并在成功后跳轉(zhuǎn)到登錄頁面并刷新該頁面,需要的朋友可以參考下2024-12-12
Vue實現(xiàn)點擊按鈕復(fù)制文本內(nèi)容的例子
今天小編就為大家分享一篇Vue實現(xiàn)點擊按鈕復(fù)制文本內(nèi)容的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11

