作者:df0134330 | 来源:互联网 | 2023-09-16 10:12
[1,2,3,4,5,6,7,8,9,10]这里简单模拟了一个分页,pageNo当前页码,pageSize每页大小。InfiniteScroll.jsv-infi
前言。
无限上传多,在很多场景中使用。 在电脑、移动端,特别是移动端,都广泛应用于掘金、头条等领域。 我们知道,无论是下拉还是上拉,都是基于滚动条的位置。 滚动条触摸底部,表示需要更多的加载,触摸顶部,再次下拉表示刷新。 让我们来看一个简单的代码示例:
let列表=[ ]
let页面大小=10
let pageNo=1
//刷新
函数刷新() {
列表=
pageNo=1;
罗德莫() )
}
//加载更多
功能加载存储器
for(letI=)第1页) * 10 1一; I=页面*页面; I ) {2}
我叫list.push(I )
}
pageNo
控制台日志(列表) )。
}
罗德莫() )
//[ 1,2,3,4,5,6,7,8,9,10 ]
罗德莫() )
/[ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 ]
.
刷新() )
//[ 1,2,3,4,5,6,7,8,9,10 ]在这里简单地模拟了分页符、pageNo的当前页码、pageSize的每页的大小。 下面具体实现了vue如何通过指令实现无限上传的更多功能。
InfiniteScroll.js v-infinite-scroll指令主要接收添加指令元素的滚动事件,并根据条件加载更多事件
导出默认值{
绑定(电子绑定) {
let目标=El;
if (El.getattribute (数据滚动目标) ) )
target=El .查询选择器(El.getattribute ) )数据滚动目标;
}
target.addevent监听器(' scroll ',e={
const busy=El.getattribute (数据不敏感型)? 假:真;
恒定距离=El.getattribute (数据密度距离) )
? number.parseint (El.getattribute (数据信息危机,10 ) ) )。
: 100;
if (! busye.target.scrollheight-(e.target.scroll tope.target.clientheight )距离)
El .设置属性(数据不敏感型,真);
绑定.值(e;
}
);
(、
(; 使用InfiniteScrollDisabled.js v-infinite-scroll-disabled命令控制是否可以进行更多加载,例如在加载过程中。 在这种情况下,不需要重复执行
导出默认值{
绑定(电子绑定) {
El .设置属性(数据不敏感型,绑定.值);
(、
日期(El,绑定) {
El .设置属性(数据不敏感型,绑定.值);
(、
(; InfiniteScrollDistance.js v-infinite-scroll-distance命令用于控制触底距离,在完全触底之前无需施加更多负载。 例如,距离底部10px可以增加负载
导出默认值{
绑定(电子绑定) {
El .设置属性(数据信息危机),绑定.值);
(、
日期(El,绑定) {
El .设置属性(数据信息危机),绑定.值);
(、
(; 挂载指令index.js importinfinitescrollfrom './infinite滚动';
importinfinitescrolldisabledfrom './infinitescrolldisabled ';
importinfinitescrolldistancefrom './infinitescrolldistance ';
导出默认值{
安装(vue,选项)
恒定直径={
infinite滚动、
InfiniteScrollDisabled、
InfiniteScrollDistance
(;
object.keys (直接) .福克斯)密钥={
说明. $选项=选项;
vue.directive (密钥,指令);
);
(、
(; 指令使用模板
div
等级='列表'
v-infinite -滚动='加载更多'
v-infinite -滚动-禁用='加载'
v-infinite -滚动-距离=' 10 '
div v-for='项目在列表'/div
/div
/模板
脚本
导入从' vue ' '
importscrollfrom ' @/plugs/scroll '
vue.use (滚动) )。
导出默认值{
数据()。
返回
负载:假,
list: []
}
(、
方法:
罗德莫() )。
this .装载=true
xx.then ((数据)={
this.list=this.list.concat (数据)
this.loading=假
() )={。
this.loading=假
() )
}
}
}
请记住,添加/script命令的元素必须具有滚动条,必须具有滚动条。 一切都是胡说八道
这样就很容易实现了。 vue无限下拉加载更多的插件。 当然,也可以排列美化。 如果要加载更多,可以添加加载样式。 例如:
div
等级='列表'
v-infinite -滚动='加载更多'
v-infinite -滚动-禁用='加载'
v-infinite -滚动-距离=' 10 '
div v-for='项目在列表'/div
div v-if='加载'加载./div
/div