iview 下拉刷新loadTop报错解决

曾经终败给现在 2022-01-07 22:01 281阅读 0赞
  1. <div class="noData" v-if="lifeList.length==0">
  2. <img src="../assets/images/noData.png" alt="">
  3. <p>这里暂时还没有内容哦~亲</p>
  4. </div>
  5. <mt-loadmore :top-method="loadTop" ref="loadTop" v-else>
  6. <div v-infinite-scroll="loadMore" infinite-scroll-disabled="loading" infinite-scroll-distance="10">
  7. <LifeListItem :lists="lifeList" merchantType="user"></LifeListItem>
  8. <div class="loading-text" v-show="{loadingTextBtn:true}">
  9. <span v-text="loadingText"></span>
  10. <mt-spinner v-if="(loadingComplete==false)" type="snake" :size="16"></mt-spinner>
  11. </div>
  12. </div>
  13. <div class="refreshComplete" v-if="refreshComplete==true">帖子已更新</div>
  14. </mt-loadmore>

由于我设定的页面默认进入的时候加载一次刷新函数,刚开始刷新完之后lifeList还不能及时更新过来,且我给该组件上加了v-else等判断,所以会报错:

  1. Error in mounted hook: "TypeError: Cannot read property 'onTopLoaded' of undefined"

获取当前this.$refs可以看到有这个dom元素 loadTop
但是this.$refs.loadTop打印则为undefined

解决办法:

  1. loadTop(){
  2. this.$store.dispatch('refreshLifeList', {
  3. city: this.city,
  4. country: this.country,
  5. category: this.category,
  6. page: 0,
  7. size: this.size
  8. });
  9. this.page++;
  10. if(this.lifeList.length>0){ //这个判断是新加的
  11. this.$refs.loadTop.onTopLoaded();
  12. }
  13. this.refreshComplete = true;
  14. setTimeout(() => {
  15. this.refreshComplete = false;
  16. }, 2000)
  17. },

给loadTop函数里的

  1. this.$refs.loadTop.onTopLoaded(); 做一个判断即可。
  2. 或者在html中不要加v-ifv-else是否展示的判断都可。

转载于:https://www.cnblogs.com/beileixinqing/p/9229554.html

发表评论

表情:
评论列表 (有 0 条评论,281人围观)

还没有评论,来说两句吧...

相关阅读

    相关 uniapp 刷新

    这里,最好仔细看一下scroll-view组件的api介绍。scroll-view | uni-app官网//开启自定义下拉刷新//初始情况下,关闭刷新状态/*自定义下拉...