vue等待數(shù)據(jù)渲染完成后執(zhí)行下一個(gè)方法問題
vue等待數(shù)據(jù)渲染完成后執(zhí)行下一個(gè)方法
watch: { dataDetails: function() { this.$nextTick(() => { this.changeView() }); } },
在watch里面寫上要監(jiān)控的數(shù)據(jù),上面的例子是監(jiān)控dataDetails,在this.$nextTick()勾子里面寫的方法就可以在dataDetails渲染到頁(yè)面完成之后執(zhí)行changeView方法
vue頁(yè)面渲染結(jié)束事件
在使用vue.js框架的時(shí)候,有時(shí)候會(huì)希望在頁(yè)面渲染完成之后,再執(zhí)行函數(shù)方法來(lái)處理初始化相關(guān)的操作,如果只處理頁(yè)面位置、寬或者高時(shí),必須要在頁(yè)面完全渲染之后才可以,頁(yè)面沒有加載完成之前,獲取到的寬高不準(zhǔn)確。使用過(guò)jquery的都知道,有個(gè)ready方法可以使用,但vue.js則需要結(jié)合watch和nextTick方法來(lái)使用。
1.下面開始介紹下,在頁(yè)面加載一個(gè)數(shù)據(jù)列表完成之后,頁(yè)面自動(dòng)滾動(dòng)定位到中間某個(gè)列表元素,需要在列表數(shù)據(jù)渲染完成,計(jì)算列表高度,再控制定位到指定行。首先介紹下一開始嘗試沒有生效的方案,這也是大家最容易出現(xiàn)錯(cuò)誤的地方,vue.js提供的mounted函數(shù),表示掛載到實(shí)例上去之后調(diào)用該鉤子。
2.運(yùn)行之后,發(fā)現(xiàn)mounted執(zhí)行的時(shí)候,獲取到的height值不對(duì),打個(gè)斷點(diǎn)也可以發(fā)現(xiàn),此時(shí)頁(yè)面沒有渲染完成,列表塊還是一片空白
3.此時(shí)查詢官方api文檔發(fā)現(xiàn),有一個(gè)nextTick方法,意思是在下次 DOM 更新循環(huán)結(jié)束之后執(zhí)行延遲回調(diào)。在修改數(shù)據(jù)之后立即使用這個(gè)方法,獲取更新后的 DOM。使用之后發(fā)現(xiàn),還是不能解決我所需要的效果
4.繼續(xù)查詢api文檔發(fā)現(xiàn),watch方法,用于觀察Vue實(shí)例上的數(shù)據(jù)變動(dòng)。對(duì)應(yīng)一個(gè)對(duì)象,鍵是觀察表達(dá)式,值是對(duì)應(yīng)回調(diào),再次嘗試,運(yùn)行后發(fā)現(xiàn)還是不行
5.最終把watch和nextTick組合一起,watch:{ showList:function(){ this.goPrice(0); }}
showList對(duì)應(yīng)表格頁(yè)面的綁定變量
6.運(yùn)行后發(fā)現(xiàn),已經(jīng)達(dá)到了預(yù)期的效果
注意:這里 watch 要和 methods 方法平級(jí)展示
watch:{ htcfOrder:function(){ //頁(yè)面渲染完成后的操作 this.$nextTick(function(){ // 開工前 if(vm.htcfOrder !=null && vm.htcfOrder.beforeWorkList !=null && vm.htcfOrder.beforeWorkList.length>0){ for (let i = 0; i < vm.htcfOrder.beforeWorkList.length; i++) { if (vm.htcfOrder.beforeWorkList[i].urlType == 1){ var player2 = videojs(vm.htcfOrder.beforeWorkList[i].extKey+i,{ muted: false,controls : true,height:300,width:300,poster:'',src:'',preload:"auto" },function(){ }); player2.reset(); player2.src(vm.htcfOrder.beforeWorkList[i].extValue); player2.load(); } } } }) } }, methods:{}
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue3?實(shí)現(xiàn)一個(gè)自定義toast?小彈窗功能
這篇文章主要介紹了Vue3?實(shí)現(xiàn)一個(gè)自定義toast?小彈窗,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09el-date-picker時(shí)間清空值為null處理方案
本文介紹關(guān)于Vue.js項(xiàng)目中時(shí)間選擇器組件的問題,當(dāng)選擇后清空導(dǎo)致值變?yōu)閚ull,進(jìn)而引發(fā)后臺(tái)接口報(bào)錯(cuò),通過(guò)監(jiān)聽`overallForm.time`的值并設(shè)置為空數(shù)組,成功解決此問題,確保了數(shù)據(jù)正確性,同時(shí),建議避免直接監(jiān)聽整個(gè)對(duì)象以優(yōu)化性能,感興趣的朋友一起看看吧2024-08-08關(guān)于vue3+echart5?遇到的坑?Cannot?read?properties?of?undefine
這篇文章主要介紹了vue3+echart5?遇到的坑?Cannot?read?properties?of?undefined?(reading?'type'),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04vue?cli?局部混入mixin和全局混入mixin的過(guò)程
這篇文章主要介紹了vue?cli?局部混入mixin和全局混入mixin的過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05