vue2.0和mintui-infiniteScroll结合如何实现无线滚动加载

 更新时间:2023年10月24日 09:47:09   作者:CloudEmperor  
这篇文章主要介绍了vue2.0和mintui-infiniteScroll结合如何实现无线滚动加载,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

vue2.0和mintui-infiniteScroll实现无线滚动加载

 
 <template lang="html">
  <div class="main">
     <div class='list-box'>
      <ul v-infinite-scroll="loadMore"
          infinite-scroll-disabled="loading"
          infinite-scroll-immediate-check="true"
          infinite-scroll-distance="40">
        <li v-for="(item ,index) in list" :key="index">
              {{item.title}}
        </li>
      </ul>
       <!--显示加载中状态-->
      <div class="loading-box" v-if="loading">
          <mt-spinner type="fading-circle" class="loading-more"  color="#0188fd"></mt-spinner>	                   		                  
      </div>			 
      <div class="no-more" v-if="noMore">亲,已经到底了哦!</div> 		
    </div>  
  </div>
</template>
 <script>
  import { InfiniteScroll , Spinner } from 'mint-ui';
  export default {
    components: {
			'mt-spinner':Spinner,
		},
    data() {
      return {
		list: [], 
        pagesNum: 1,//总页数
		loading: false, // 加载中转圈
	    noMore: false, // 是否还有更多
        endTime: "",        
        page: {
          access_token: this.$route.query.access_token,
          planId: this.$route.query.id,
          pageNumber: 1,
          pageSize: 20,
        }
      }
    },
    created() {
      this.initData();
    },
    mounted() {
 
    },
    methods: {
      initData: function(type) {  
        this.loading = true
		axios.get("xxx", {
				params: this.page
			})
			.then((data) => {
				if (type === 'loadMore') {
				  this.list = this.list.concat(data.data.data.list);
				} else {      
				  this.list = data.data.data.list;
									  
				}
 
		// 设置分页
		this.pagesNum = data.data.data.pages; //总页数	                                            
		this.loading = false;          
	   
			})
			.catch(function(err) {
				console.log(err);
			})
 
	  },
      loadMore:function() {
		this.page.pageNumber += 1 // 增加分页
		this.loading = true // 加载中
		if(this.page.pageNumber <= this.pagesNum){
			//加载数据
			setTimeout(()=>{
				this.initData('loadMore')
			},200)
		   
		 
		}else{ 
			this.noMore = true // 显示没有更多了
			this.loading = false // 关闭加载中
			return false
		}
	   
	   
	 }
    }
 
  }
</script>
<style>
  .list-box {
        max-height:calc(100% - 1.8rem); //必须有高度
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
		}
  .list-box ul{
      width:100%;
   }
  .list-box ul li{
       width: 100%;
	   height: 0.55rem;
	   @include flexbox();
	   @include justify-content(space-between);
	   border-bottom: 1px solid #e4e4e4;
  }
</style>

vue使用mint-ui的Infinite scroll(无线滚动)报错

MutationObserver': parameter 1 is not of type 'Node'." * Failed

在Vue里面使用mint-ui的Infinite scroll无线滚动,按照配置写完之后,发现控制台里报错了。

如下错误信息:

Error in directive infinite-scroll inserted hook: “TypeError: Failed to execute ‘observe’ on ‘MutationObserver’: parameter 1 is not of type ‘Node’.”
Failed to execute ‘observe’ on ‘MutationObserver’: parameter 1 is not of type ‘Node’.

解决方法

给使用这个组件的元素设置height和overflow

<div class="wrap"
   v-infinite-scroll = "loadMore"
   infinite-scroll-disabled = "loading"
   infinite-scroll-distance = "10"
></div>
.wrap {
    height: 100vh;
    overflow-y: auto;
}

然后控制台就不会报错了。然而官网并没有写这条非常重要的信息。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • VUE使用day.js显示时分秒并实时更新时间效果实例

    VUE使用day.js显示时分秒并实时更新时间效果实例

    vue.js是目前比较流行的前端框架之一,它提供了非常多的基础组件和工具库,以方便开发者快速搭建具有可重用性的web应用,下面这篇文章主要给大家介绍了关于VUE使用day.js显示时分秒并实时更新时间效果的相关资料,需要的朋友可以参考下
    2024-04-04
  • vue 关闭浏览器窗口的时候,清空localStorage的数据示例

    vue 关闭浏览器窗口的时候,清空localStorage的数据示例

    今天小编就为大家分享一篇vue 关闭浏览器窗口的时候,清空localStorage的数据示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • vue打包之后生成一个配置文件修改接口的方法

    vue打包之后生成一个配置文件修改接口的方法

    这篇文章主要介绍了vue打包之后生成一个配置文件修改接口 的相关资料,本文分步骤给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-12-12
  • vue this.$refs.xxx报错undefined问题及解决

    vue this.$refs.xxx报错undefined问题及解决

    这篇文章主要介绍了vue this.$refs.xxx报错undefined问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • vue.js样式布局Flutter业务开发常用技巧

    vue.js样式布局Flutter业务开发常用技巧

    这篇文章主要为大家介绍了vue.js样式布局Flutter业务开发中的常用技巧,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2021-11-11
  • vue中实现子组件接收父组件方法并获取返回值

    vue中实现子组件接收父组件方法并获取返回值

    这篇文章主要介绍了vue中实现子组件接收父组件方法并获取返回值方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Vue数据与事件绑定以及Class和Style的绑定详细讲解

    Vue数据与事件绑定以及Class和Style的绑定详细讲解

    这篇文章主要介绍了Vue数据与事件绑定以及Class和Style的绑定,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-01-01
  • Vue学习笔记之计算属性与侦听器用法

    Vue学习笔记之计算属性与侦听器用法

    这篇文章主要介绍了Vue学习笔记之计算属性与侦听器用法,结合实例形式详细分析了vue.js计算属性与侦听器基本功能、原理、使用方法及操作注意事项,需要的朋友可以参考下
    2019-12-12
  • vue父组件值变化但子组件不刷新的三种解决方案

    vue父组件值变化但子组件不刷新的三种解决方案

    父组件传递给子组件的数据,如果是一个复杂对象(例如一个数组或对象),那么子组件只会监听对象的引用而不是对象的内容,这意味着当对象的内容发生变化时,子组件不会更新,本文给大家介绍了vue子组件不刷新的三种解决方案,需要的朋友可以参考下
    2024-03-03
  • vue 点击其他区域关闭自定义div操作

    vue 点击其他区域关闭自定义div操作

    这篇文章主要介绍了vue 点击其他区域关闭自定义div操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07

最新评论