-
Notifications
You must be signed in to change notification settings - Fork 415
添加之后,不停地调用加载方法 #18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
能否提供一个可重现这个问题的用例? |
我把主要代码贴出来,可以吗? methods template 就这样,每次请求了之后,就会继续重复请求。只要把busy改为false了之后,就会又执行loadMore方法。 |
已经解决了。 |
busy 是应该在 ajax 结束的时候才重置为 false 的。 |
`methods: { loadMore: function() { this.busy = true; var _ = this; var vd = {}; $.get('getCollectList',vd,function(res){ 1、上面的写法,会不停地刷。。 |
如果是屏幕动一下就加载,发现即便不在这个页面,在其他页面也会加载,不停的加载。。。 |
@hubinjie 是否使用了 keep alive 的功能? |
@furybean 是的是的,咋破? |
@hubinjie 可以考虑控制一下 disabled 属性? |
@furybean 感觉还是有问题,当你再次进来的时候又加载了,离开又停,再次进来又加载,切进来很卡 |
如果把这个 directive 写在你要 keep alive 的组件本身呢,这样感觉就只绑定一次? |
@hubinjie 使用keep-alive出现了和一样的问题呢 |
好像跟keep-alive一起使用的确有问题,造成不同的路由页面的滚动条一动都会触发无限加载。。。而且好像不能保存滚动状态 |
不使用keep-alive切换组件后也是触发无限加载!! |
@iversong 这种情况能提供一个 demo 么? |
@furybean 我大概找到原因了,当所有数据加载完API返回空的时候,list数组的长度就不会变动触发dom更新,从而重复请求,插件内部是根据高度变化来判断吗,所有数据请求完应该怎么处理,麻烦指教! /**
* 从api获取数据
*/
loadData() {
this.loading = true
this.$http.get('/ajax/user/get_follow',{page: this.pageindex,pagesize:20}).then((response) => {
if (response.ok) {
this.onLoadData(response.data)
}
}, (response) => {
// error callback
});
},
/**
* 接收API获取的数据,并追加到当前列表
*/
onLoadData(data) {
this.pageindex++
let i=0, length=data.length, userItem
if (length > 0) {
for(; i<length; i++) {
userItem = data[i]
this.list.push(userItem)
}
} else {
this.allLoaded = true
}
this.loading = false
} |
@iversong 这种情况可以设置 infinite-scroll-immediate-check 为 false。 |
infinite-scroll-immediate-check 为 false也不行,本来是往下滚动10个像素再加载的,而现在是鼠标只要往上或者往下滚动都加载;感觉这个组件处理ajax异步回调是有bug的 |
回归本源,实现滚动加载其实没那么复杂,自己写的一个小例,亲测还行,望大家指正:
|
确实,不停地调用加载方法 +1 ,按demo走的。跟楼上说的问题一致。 |
我也遇到 此问题 没人解决吗? |
之前使用 |
我也遇到了,请问各位大神是怎么解决的? |
@lo6041 调用的方法不能有括号
估计是个bug |
猜测应该是scroll event触发太快了,
|
我也遇到这个问题,我把setTimeout时间设置大点就好了,就是图片还没有完全加载完就触发了加载事件的原因,分享一下 |
修复以下情况下会导致无限调用 loadMore 的情况: 1. 当调用 loadMore,产生新的高度变化,但是这个高度不够 infinite-scroll-distance 时,导致再次调用 loadMore 2. 当调用 loadMore 时,由于底部有加载动作条渲染,而实际上又没有新的数据(比如接口返回零行),导致无限调用 loadMore ElemeFE#35 ElemeFE#18
可以试试使用infinite-scroll-immediate-check="busy"禁掉自动检查,触发loadMore的时候在开启检查 |
我也遇到了 大概就是@wengcd说的 |
:infinite-scroll-disabled="true" 无限循环怎么破 |
这个解决方案有效 |
补充: |
就是这个原因。我也遇到了。将尖括号去掉后就好使了~感谢老哥! |
几年的bug了也不改 |
官网在线运行代码都有问题,没滚动自己一直加载 |
用 @isaacduane 的 方式实现了,放弃infinitescroll了 |
这插件须要给父元素设置一个固定高度,父元素必须要出现滚动条,功能才能正常使用。elementUI的官方案例很清楚,因为案例页面上也是有两个滚动条的,浏览器本身的滚动条,插件的父元素的滚动条。两个滚动条,呵呵 #18 (comment) @isaacduane 此方法实用。Vue 1.0的ready需要改成mounted |
这个问题其实是官方的demo使用infinite-scroll-disabled="busy",busy为常量字符串,因此busy一直会为true,正确方法应该是 :infinite-scroll-disabled="busy",将busy当作一个变量 |
正解! |
一直不停地调用加载方法。根本停不下来。。。
感觉你们做的效果,体验都挺不错,可是我用却老是出问题,忧伤啊
The text was updated successfully, but these errors were encountered: