今度は、無限スクロールとより多くのメソッドの読み込みを実現するための Vue.js モバイル コンポーネント ライブラリ mint-ui に関する記事を共有します。これは非常に参考になるので、皆さんのお役に立てれば幸いです。
多くのくぐり抜けた穴を経て、より多くのコンポーネントを読み込むためにスクロールを監視するという共通点を発見しました。
これらのより多くを読み込むメソッドは、より多くのコンテンツを読み込む必要がある要素にバインドされているため、
そのため、ページに入るとき、スクロール イベントが監視された後、さらにロードを続けます。
したがって、無限スクロール ロードの場合、最初のロード リストに関数を記述する必要はありません。
コードは次のとおりです。
html ://父组件
<p v-infinite-scroll="loadMore" infinite-scroll-disabled="loading" infinite-scroll-distance="1000">
<LifeLists :loadingTextBtn="loadingTextBtn" :loadingText="loadingText" :loadingComplete="loadingComplete" :lifeList="lifeList"></LifeLists>
</p>
//LifeLists组件:
<LifeListItem :lists="lifeList"></LifeListItem>
<p class="loading-text" v-show="{loadingTextBtn:true}">
<span v-text="loadingText"></span>
<mt-spinner v-if="(loadingComplete==false)" type="snake" :size="16"></mt-spinner>
</p>
LifeListItem组件:
<p id="lifeListItemBox">
<router-link v-for="(item,index) in lists" :to="{name:'lifeDetails',params:{id:item.id}}" :key="index">
<p class="lifeListItem1" v-if="(item.status=='online')">
<p v-if="(item.hasPrice==true)">
<p class="title1">{{item.title}}</p>
<p class="price">
<b class="now"><span class="unit">{{item.monetaryUnit}}</span>{{item.price}}</b>
</p>
</p>
<p v-else class="title2">{{item.title}}</p>
<p class="info">
发布于{{formatTime(item.createAt)}}
{{item.countryName}} {{item.cityName}}
</p>
<p class="imageList">
<img :src="img" alt="" v-for="(img,index) in item.photos">
</p>
<p class="content">{{item.detail}}</p>
<p class="listBar">
<p class="iconBox">
<svg class="icon icon-dianzan" aria-hidden="true">
<use xlink:href="#icon-dianzan" rel="external nofollow" ></use>
</svg>
{{item.like}}
</p>
<p class="iconBox">
<svg class="icon icon-pinglun2" aria-hidden="true">
<use xlink:href="#icon-pinglun2" rel="external nofollow" ></use>
</svg>
{{item.commentCount}}
</p>
</p>
</p>
</router-link>
</p>
data:
page:0, size:10, loadingTextBtn:false, loadingText:"努力加载中", loadingComplete:false, refreshComplete:false, city:"", country:""
methods:
loadMore() { this.loading = true; this.loadingTextBtn=true; if(parseInt(this.page)==0){ this.$store.dispatch('loadMoreLifeList',{city:"纽约",country:"美国",category:"",page:this.page,size:this.size}); this.page++; }else if(parseInt(this.page)>0&&parseInt(this.page)<parseInt(this.totalPages)){ setTimeout(() => { // this.$store.dispatch('loadMoreLifeList',{city:this.city,country:this.country,category:"",page:this.page,size:this.size}) this.$store.dispatch('loadMoreLifeList',{city:"纽约",country:"美国",category:"",page:this.page,size:this.size}); this.page++; }, 1000); }else{ this.loadingText="已全部加载完成"; this.loadingComplete=true; this.loading = false; } },
ここで重要なのは、現在のページが0、つまり最初のページのときに、 setTimeout タイマーの必要はありません。直接ロードをリクエストし、さらにロードされるときにタイマーを追加します。
さらにロードするためのプルアップを実装するための mint-ui ロードモア コンポーネントをインターネット上でたくさん見つけました。プルアップは対応するロードモアイベントをトリガーするため、ページに入るときにデータが自動的にロードされるべきではありません。データの最初のページの関数をここに追加できます。
上記は私がまとめた文章です、皆様のお役に立てれば幸いです
関連記事:
vue-cliにおけるwebpack3の速度最適化に関する問題EasyUIでのabsの使い方を詳しく解説 zTree でインタラクティブなタブを実装する方法以上がVue.js が無限スクロール読み込みを実装する方法についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。