最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Vue結(jié)合better-scroll實現(xiàn)上拉加載(Vue3)

2021-05-15 23:18 作者:忘魂兒  | 我要投稿

首先在mountedBScroll對象中注冊pullUpLoad,并設(shè)立在props內(nèi)部

this.scroll=new?BScroll(this.$refs.wrapper,{

??????click:true,

??????observeDOM?:true,

??????probeType:this.probeType,

??????pullUpLoad:this.pullUpload

????})

props:{

pullUpload:{

????type:Boolean,

????default:false

??}

}

其次監(jiān)聽pullingUp事件,并向父組件發(fā)射事件

this.scroll.on('pullingUp',()=>{

??????this.$emit('pullingUp')

?})

然后在scroll組件上編寫事件,并向子組件指定props內(nèi)容傳參

<scroll?class="wrapper"

?????????????????????ref="scroll"?

?????????????????????:probe-type="3"

?????????????????????:pullUpload="true"

??????????????????????@showposition="limitposition"

??????????????????????@pullingUp="loadMore"

??>

再然后回到首頁編寫指定函數(shù)

loadMore(){

????????this.getHomeGoods(this.currentGoodsType) //指定區(qū)域的上拉加載

??????????console.log("上拉加載更多");?

????}

到這里發(fā)現(xiàn),scrollheight還沒等圖片全部加載完就計算完成,導(dǎo)致我們滾動卡在一個位置,

這時我們就需要在圖片上監(jiān)聽它是否全部加載完成,別擔(dān)心,vue有自帶的事件-----load

在goodsListItem組件中

<template>

??<div?id="goodsListItem">

??????<img?:src="goodsListItem.show.img"?alt=""?@load="allImgLoad">

??????<div?id="info">

????????<p>{{goodsListItem.title}}</p>

????????<span>{{goodsListItem.price}}</span>

??????</div>

??</div>

</template>

商品列表內(nèi)部編寫函數(shù)

methods:{

????allImgLoad(){

??????this.bus.emit('imgPartLoad')//調(diào)用事件總線方法

????}

??}

到這兒為止,有同學(xué)就會有疑問了,你這個bus是啥?

你先明白一個道理,有些組件與我們這個scroll組件并無關(guān)聯(lián),也就是不是父子組件的關(guān)系,那么它們也就做不到事件的發(fā)送和接收了,當(dāng)然了,你想通過vuex,指定一個內(nèi)容,通過它的變化來清楚一個事件的改變,莫不如用我們的事件總線。

Vue2中,都是通過this.$bus.$emit('事件')還有this.$bus.$on('發(fā)送過來的事件',()=>{}),我們還需要在main.js中注冊實例對象

Vue.prototype.$bus=new Vue();

但是在Vue3.x以后從實例中移除了on,off和once 方 法,不過?emit 仍然是現(xiàn)有 API 的一部分,但也只能實現(xiàn)子組件觸發(fā)父組件的方法

此時就得依賴于mitt模塊

安裝方法:npm install --save mitt或者yarn add mitt -S

使用方法

import?mitt?from?'mitt';

const?bus?=?mitt();

const?app?=?createApp(App)

installElementPlus(app)

app.config.globalProperties.bus?=?bus

app.use(store).use(router).mount('#app')

首頁創(chuàng)建過程中接收事件

created:在模板渲染成html前調(diào)用,即通常初始化某些屬性值,然后再渲染成視圖。

mounted:在模板渲染成html后調(diào)用,一般是初始化頁面完成后,再對html的dom節(jié)點進(jìn)行操作

created(){

???this.getHomeData();

???this.getHomeGoods('pop');

???this.getHomeGoods('new');

???this.getHomeGoods('sell');

???this.bus.on('imgPartLoad',()=>{

?????this.$refs.scroll.scroll.refresh //這個寫在created中會出bug所以建議使用在mounted中

???});

??}

?mounted(){

???this.bus.on('imgPartLoad',()=>{

?????this.$refs.scroll.scroll.refresh

???});

??}

至此













Vue結(jié)合better-scroll實現(xiàn)上拉加載(Vue3)的評論 (共 條)

分享到微博請遵守國家法律
独山县| 白沙| 仙居县| 钟山县| 晋江市| 汉中市| 莎车县| 元氏县| 吉木乃县| 科技| 噶尔县| 乐至县| 淮阳县| 建平县| 屏东市| 河池市| 健康| 郧西县| 肇州县| 林州市| 乌拉特后旗| 清苑县| 平顺县| 广饶县| 汉川市| 汾西县| 锡林郭勒盟| 寿阳县| 定西市| 洱源县| 鄂州市| 沙河市| 江门市| 武强县| 西峡县| 玛曲县| 永丰县| 平乡县| 颍上县| 清徐县| 隆德县|