欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

vueJs實現(xiàn)DOM加載完之后自動下拉到底部的實例代碼

這篇文章給大家介紹vueJs實現(xiàn)DOM加載完成之后自動下拉到底部,文中給大家記錄了整個問題的過程,對實現(xiàn)思路感興趣的朋友大家閱讀下本文。

專業(yè)網(wǎng)站制作公司,專做排名好的好網(wǎng)站,排在同行前面,為您帶來客戶和效益!成都創(chuàng)新互聯(lián)公司為您提供品質(zhì)好成都網(wǎng)站建設(shè),五站合一網(wǎng)站設(shè)計制作,服務(wù)好的網(wǎng)站設(shè)計公司,負(fù)責(zé)任的成都網(wǎng)站制作公司!

/.....................................更新..................................../

這個問題是很早之前遇到的,后來想來,其實是個很簡單的問題。在dom記載完成就自動下拉到底部,只需要使用Vue.nextTick(() => {})函數(shù)即可,因為vue是虛擬dom,不會實時更新dom,nectTick()就是注冊在下一次更新dom之后的回調(diào)。

而再看我的問題,其實之所以出現(xiàn)那樣的問題,就是ajax的異步執(zhí)行的問題而已。

/..................................................更新完..................../

工作項目是基于vueJs框架的,遇到一個需求:有一組件,在創(chuàng)建時會通過ajax向服務(wù)器請求一組數(shù)據(jù),以列表形式展示出來,并且自動下拉到底部。

實現(xiàn)思路:首先弄清楚vueJs組件的生命周期,如下圖。發(fā)完發(fā)現(xiàn)圖不見了...這里貌似不能放圖,就是vueJs生命周期和鉤子,讀者自行百度一下吧,到處都是。

具體細(xì)節(jié)不做介紹,自行看圖或者右轉(zhuǎn)官網(wǎng)查找http://cn.vuejs.org/

知道了生命周期,再對應(yīng)需求,很自然地關(guān)注三個時期beforeCreate,mounted,updated.

1. beforeCreate時期

此時期相當(dāng)于做一些初始化工作,此時做ajax最合適。代碼如下:

beforeRouteEnter(to, from, next) {
 next(function(vm) {
 if (vm.dataList.length == 0) {
  //此處實現(xiàn)ajax
  vm.getVersionInfo();
 }
 });
}

代碼是之前寫的,使用的beforeRouteEnter鉤子(vm:因為此時該組件可能還未創(chuàng)建,所以不能用this,而用vm代替,vm所執(zhí)行代碼會在其創(chuàng)建之后執(zhí)行。),這個鉤子會在每次通過vue-route路由進(jìn)入組件頁面前調(diào)用,而需求是只有第一次進(jìn)入需要自動執(zhí)行ajax,因此還做了判斷data是否長度為0,而在寫博的時候發(fā)現(xiàn),如果使用beforeCreate鉤子應(yīng)該就不會有這么多麻煩,不過也僅僅是猜測,使用請自行驗證。

2. mounted時期

此鉤子會在模板(html)編譯完成并掛載后調(diào)用,最開始我想的是,在這里實現(xiàn)一個自動滾動到底部的操作,但是發(fā)現(xiàn)不行。為什么呢?因為ajax是異步操作,在beforeCreate時期執(zhí)行了ajax,并不能保證在mounted時,數(shù)據(jù)已經(jīng)傳回,所以此時做下拉操作沒有意義。

3 updated時期

此鉤子在組件對象data數(shù)據(jù)發(fā)生變化時,而我在ajax的success回調(diào)函數(shù)里會改變data,所以此時調(diào)用應(yīng)該是很合適的。然而,實現(xiàn)之后又出現(xiàn)了問題,每次自動下拉滾動到底部只能下拉滾動到data原列表的最底部,而新添加的項還在下面。舉例來說

4(ajax新獲?。?/strong>

每次updated處執(zhí)行ajax下拉操作自動下拉滾動,只能會到4,而不是5的位置。究其原因,原來是因為updated是執(zhí)行時,打他只是data改變,而有可能document并沒有渲染完成,從而導(dǎo)致,不能處理新添加的項,而偏偏vue并沒有提供渲染完成的鉤子。

在網(wǎng)上鎖了搜了很多資料,一些資料,比較靠譜的是設(shè)置一個延遲,setTimeout(),但是這樣頁面會有明顯的一個跳動柑橘感覺閃動,影響用戶體驗,而我的處理是:

updated() {
 let count = 0;
 let interval = setInterval(() => {
  if (count > 3000) {
  clearInterval(interval);
  this.isFirst = false;
  }
  count++;
  if (document.body.scrollHeight != document.body.clientHeight) {
  document.body.scrollTop = document.body.scrollHeight;
  if (document.body.scrollTop == document.body.scrollHeight-document.body.clientHeight) {
   clearInterval(interval);
   this.isFirst = false;
  }
  }
 }, 0);
}

這個原理應(yīng)該很簡單,看代碼應(yīng)該能看明白。

總結(jié)

以上所述是小編給大家介紹的vueJs實現(xiàn)DOM加載完之后自動下拉到底部的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對創(chuàng)新互聯(lián)網(wǎng)站的支持!

本文題目:vueJs實現(xiàn)DOM加載完之后自動下拉到底部的實例代碼
網(wǎng)頁URL:http://aaarwkj.com/article34/jjpope.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、域名注冊、營銷型網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、電子商務(wù)移動網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

亚洲午夜一区二区精品| 日本毛茸茸的丰满熟妇| 午夜精品国产日韩欧美在线 | 亚洲性图中文字幕在线| 中文字幕伦理一区二区| 欧美十日本亚洲激情视频| 久久精品国产亚洲av麻豆她| 禁止未满十八在线观看| 久久热久久热在线视频| 久久精品国产亚洲七七| av在线日韩国产精品| 久热精品视频在线观看| 日本在线中文字幕乱码| 九九在线视频免费观看精彩| 国产精品九九久久精品三级| 精品国产熟女成人av| 另类激情综合在线观看| 国产一边打电话一边操| 国产亚洲精品一区久久| 强d乱码中文字幕在线| 亚洲黄色片在线播放| 日本亚洲欧洲一区二区| 操你啦夜夜操狠狠躁天天爽| 亚洲精品一区二区激情| 亚洲人妻不卡一区二区| 国产精品大屁股一区二区| 国产91日韩欧美在线| 一区二区欧美日韩91| 亚洲国产韩国精品在线| 国产免费看黄色的网站| 国产一级无码免费视频| 欧美一区二区三区va| 国产美女极度色诱视频| 国产白丝精品爽爽久久| 欧美日韩伦理片在线观看 | 亚洲欧洲日本在线天堂| 日韩福利成人av在线| 中文字幕熟女av一区二区| 色婷婷国产精品久久包臀| av一级免费在线观看| 日韩精品极品在线免费视频|