1. 程式人生 > 程式設計 >使用Element的InfiniteScroll 無限滾動元件報錯的解決

使用Element的InfiniteScroll 無限滾動元件報錯的解決

一、問題描述

在使用ElementInfiniteScroll 無限滾動時候出現以下錯誤:

TypeError: Failed to execute 'observe' on 'MutationObserver': parameter 1 is not of type 'Node'

使用Element的InfiniteScroll 無限滾動元件報錯的解決

InfiniteScroll的更多用法element官網

二、解決辦法

給需要使用 InfiniteScroll 的元素或者它的父級元素加上 overflow:auto; 屬性即可。

<template>
 <div class="home">
    <div v-infinite-scroll="loadMore" v-for="i in count" class="infinite-list" :key="i">{{ i+1 }}</div>
 </div>
</template>
<script>
export default {
 data() {
  return {
   count:5
  }
 },methods: {
  loadMore() {
   // this.count+=1;
   console.log('載入...')  
  }
 }
};
</script>
<style lang="scss">
.home {
 .infinite-list{
  width: 500px;
  height: 40px;
  line-height: 40px;
  background: lightblue;
  margin:10px;
  overflow:auto; // 加上該屬性即可。由瀏覽器定奪,如果內容被修剪,瀏覽器就會顯示滾動條以便檢視其餘內容
 }
}
</style>

三、注意事項

InfiniteScroll 無限滾動元件, 滾動至底部時,載入更多資料。據官網描述其基礎用法:

給實現滾動載入的元素(會出現滾動條的元素)新增 v-infinite-scroll屬性,屬性值是相應的載入方法名,如loadMore,即可實現滾動到底部時觸發該loadMore 方法

注意屬性和css樣式的設定:

  • 給設定了 v-infinite-scroll的元素或者其父元素設定高度如 height:200px;,並讓其超出高度顯示滾動條 overflow:auto;
  • infinite-scroll-disabled="disabled",這裡的 disabledcomputed
    裡面的屬性,利用其控制是否繼續載入。當disabled為true的時候,該載入函式 loadMore 函式將不再被觸發。
  • infinite-scroll-immediate 預設為 true,即 立即執行載入方法 loadMore,以防初始狀態下內容無法撐滿容器。即loadMore會先執行一次,這裡設定false,是讓其初始不執行,等滾動到底部時,再執行該 loadMore 方法。
<template>
	<div class="infinite-list-wrapper">
     <ul class="list" v-infinite-scroll="loadMore" infinite-scroll-disabled="disabled" infinite-scroll-immediate="false">
      <li v-for="i in count" class="list-item" :key="i">{{ i }}</li>
     </ul>
     <p v-if="loading">載入中...</p>
     <p v-if="noMore">沒有更多了</p>
    </div>
</template>
<script>
export default {
 data() {
  return {
   count:5,loading: false
  };
 },computed: {
  noMore() {
   return this.count >= 20;
  },disabled() {
   return this.loading || this.noMore;
  }
 },methods: {
  loadMore() {
   console.log("載入...")
   this.loading = true;
   setTimeout(() => {
    this.count += 2;
    this.loading = false;
   },2000);
  }
 }
};
</script>
<style lang="scss">
.home {
 .infinite-list-wrapper{
	  height:200px; // 1. 指定高度
	  overflow: auto; // 2. 內容超過指定高度 出現滾動條
	  width: 500px;
	  border:1px solid green;
	  margin-top:120px;
	  .list-item{
		   background: lightblue;
		   margin:10px;
		   height:30px;
		   line-height: 30px;
	  }
 }
}
</style>

使用Element的InfiniteScroll 無限滾動元件報錯的解決

使用Element的InfiniteScroll 無限滾動元件報錯的解決

使用Element的InfiniteScroll 無限滾動元件報錯的解決

到此這篇關於使用Element的InfiniteScroll 無限滾動元件報錯的解決的文章就介紹到這了,更多相關Element InfiniteScroll無限滾動報錯內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!