淺談Vue.js 關(guān)于頁面加載完成后執(zhí)行一個(gè)方法的問題
首先我們會(huì)想著在mounted或者created里面加入想要執(zhí)行的方法,但是有的時(shí)候會(huì)遇到在你執(zhí)行這個(gè)方法的時(shí)候,頁面還并沒有被渲染完成,所以就會(huì)出現(xiàn)這個(gè)方法在匹配頁面標(biāo)簽報(bào)錯(cuò)的情況。
解決思路:
1.通過子頁面調(diào)用父頁面的方法,因?yàn)樵谧禹撁骈_始渲染的時(shí)候,你的父頁面肯定是已經(jīng)渲染好了的,前提這里的方法中是去找尋父頁面的標(biāo)簽。
2.直接在本頁面監(jiān)視一個(gè)參數(shù),發(fā)現(xiàn)參數(shù)被初始化了,說明頁面也已經(jīng)加載完成,因?yàn)槟愕捻撁嬗玫搅诉@個(gè)參數(shù)。
方法1案例:tab頁里的子頁面如果沒有內(nèi)容就隱藏
父頁面代碼
<el-tabs v-model="initTab" type="card"> <el-tab-pane label="1信息" name="tab1"> 1 </el-tab-pane> <el-tab-pane label="2報(bào)告" name="tab2"> 2 </el-tab-pane> <el-tab-pane label="3信息" name="tab3"> 3 </el-tab-pane> <el-tab-pane label="4信息" name="tab4"> <ziyemian-group @tabShow="tabShow" title="4信息" v-if="detailInfo"> </ziyemian-group> </el-tab-pane> <el-tab-pane label="5信息" name="tab5"> 5 </el-tab-pane> <el-tab-pane label="其它信息" name="tab6"> 6 </el-tab-pane> </el-tabs> import ZiyemianGroup from './ZiyemianGroup.vue' components: { ZiyemianGroup }, data () { return { detailInfo: {}, initTab:‘tab1' } } methods: { tabShow: (data) => { document.getElementsByClassName('el-tabs__item').item(4).style.display = data }, }
然后是ZiyemianGroup.vue的代碼,這里主要就是方法調(diào)用,頁面自己搞定
data () { return { list: [] } }, mounted () { this.init() }, methods: { init() { if (list.length > 0) { this.$emit('whiteShow', 'inline') } else { this.$emit('whiteShow', 'none') } ) }
list是子頁面的內(nèi)容,這樣如果子頁面沒有內(nèi)容就可以隱藏掉了
方法2案例:我這邊需要tab頁隱藏
<el-tabs v-model="initTab" type="card"> <el-tab-pane label="1信息" name="tab1"> 1 </el-tab-pane> <el-tab-pane label="2報(bào)告" name="tab2"> 2 </el-tab-pane> <el-tab-pane label="3信息" name="tab3"> 3 </el-tab-pane> <el-tab-pane label="4信息" name="tab4"> <ziyemian-group title="4信息" v-if="detailInfo"> </ziyemian-group> </el-tab-pane> <el-tab-pane label="5信息" name="tab5"> 5 </el-tab-pane> <el-tab-pane label="其它信息" name="tab6"> 6 </el-tab-pane> </el-tabs> import ZiyemianGroup from './ZiyemianGroup.vue' components: { ZiyemianGroup }, data () { return { detailInfo: {}, initTab:‘tab1' } } watch: { detailInfo: function () { this.$nextTick(function () { this.tabShow() }) } }, methods: { tabShow () { document.getElementsByClassName('el-tabs__item').item(6).style.display = 'none' // 隱藏tab6 } }
nextTick方法,意思是在下次 DOM 更新循環(huán)結(jié)束之后執(zhí)行延遲回調(diào)。在修改數(shù)據(jù)之后立即使用這個(gè)方法,獲取更新后的 DOM。
隱藏tab的方法我用了原生js,因?yàn)関ue生成后的頁面和寫的vue頁面有所差別,所以我直接用了最笨的方法進(jìn)行匹配。
以上所述是小編給大家介紹的Vue.js 關(guān)于頁面加載完成后執(zhí)行一個(gè)方法的問題詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- vue實(shí)現(xiàn)加載頁面自動(dòng)觸發(fā)函數(shù)(及異步獲取數(shù)據(jù))
- 使用Vue實(shí)現(xiàn)調(diào)用接口加載頁面初始數(shù)據(jù)
- VUE頁面中加載外部HTML的示例代碼
- vue.js頁面加載執(zhí)行created,mounted的先后順序說明
- 詳解vue頁面首次加載緩慢原因及解決方案
- 詳解Vue.js在頁面加載時(shí)執(zhí)行某個(gè)方法
- vue實(shí)現(xiàn)頁面加載動(dòng)畫效果
- Vue 路由切換時(shí)頁面內(nèi)容沒有重新加載的解決方法
- 解決vue項(xiàng)目中頁面調(diào)用數(shù)據(jù) 在數(shù)據(jù)加載完畢之前出現(xiàn)undefined問題
- 使用vue實(shí)現(xiàn)加載頁
相關(guān)文章
在Vue中使用scoped屬性實(shí)現(xiàn)樣式隔離的原因解析
scoped是Vue的一個(gè)特殊屬性,可以應(yīng)用于<style>標(biāo)簽中的樣式,這篇文章給大家介紹在Vue中,使用scoped屬性為什么可以實(shí)現(xiàn)樣式隔離,感興趣的朋友一起看看吧2023-12-12解決vue?eslint開發(fā)嚴(yán)格模式警告錯(cuò)誤的問題
這篇文章主要介紹了解決vue?eslint開發(fā)嚴(yán)格模式警告錯(cuò)誤的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04vue中改變選中當(dāng)前項(xiàng)的顯示隱藏或者狀態(tài)的實(shí)現(xiàn)方法
下面小編就為大家分享一篇vue中改變選中當(dāng)前項(xiàng)的顯示隱藏或者狀態(tài)的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-02-02Vue常見報(bào)錯(cuò)整理大全(從此報(bào)錯(cuò)不害怕)
寫代碼的過程中一定會(huì)遇到報(bào)錯(cuò),遇到報(bào)錯(cuò)不要擔(dān)心,認(rèn)真分析就可以解決報(bào)錯(cuò),同時(shí)積累經(jīng)驗(yàn),早日成為大牛,這篇文章主要給大家介紹了關(guān)于Vue常見報(bào)錯(cuò)整理的相關(guān)資料,需要的朋友可以參考下2022-08-08Vue項(xiàng)目中常用的工具函數(shù)總結(jié)
這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目中常用的工具函數(shù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-09-09Vue.js進(jìn)階知識(shí)點(diǎn)總結(jié)
給大家分享了關(guān)于Vue.js想成為高手的5個(gè)總要知識(shí)點(diǎn),需要的朋友可以學(xué)習(xí)下。2018-04-04