iview 下拉重新整理loadTop報錯解決

蓓蕾心晴發表於2018-06-26
<div class="noData" v-if="lifeList.length==0">
<img src="../assets/images/noData.png" alt="">
<p>這裡暫時還沒有內容哦~親</p>
</div>
<mt-loadmore :top-method="loadTop" ref="loadTop" v-else>
<div v-infinite-scroll="loadMore" infinite-scroll-disabled="loading" infinite-scroll-distance="10">
<LifeListItem :lists="lifeList" merchantType="user"></LifeListItem>
<div class="loading-text" v-show="{loadingTextBtn:true}">
<span v-text="loadingText"></span>
<mt-spinner v-if="(loadingComplete==false)" type="snake" :size="16"></mt-spinner>
</div>
</div>
<div class="refreshComplete" v-if="refreshComplete==true">帖子已更新</div>
</mt-loadmore>

由於我設定的頁面預設進入的時候載入一次重新整理函式,剛開始重新整理完之後lifeList還不能及時更新過來,且我給該元件上加了v-else等判斷,所以會報錯:

Error in mounted hook: "TypeError: Cannot read property `onTopLoaded` of undefined"

獲取當前this.$refs可以看到有這個dom元素 loadTop
但是this.$refs.loadTop列印則為undefined

解決辦法:

loadTop(){
        this.$store.dispatch(`refreshLifeList`, {
          city: this.city,
          country: this.country,
          category: this.category,
          page: 0,
          size: this.size
        });
        this.page++;
        if(this.lifeList.length>0){ //這個判斷是新加的
          this.$refs.loadTop.onTopLoaded();
        }
        this.refreshComplete = true;
        setTimeout(() => {
          this.refreshComplete = false;
        }, 2000)
      },

給loadTop函式裡的

this.$refs.loadTop.onTopLoaded(); 做一個判斷即可。

或者在html中不要加v-if和v-else是否展示的判斷都可。

相關文章