vue2.0和mintui-infiniteScroll结合如何实现无线滚动加载
作者: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; }
然后控制台就不会报错了。然而官网并没有写这条非常重要的信息。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。