无限滚动,也称为无限滚动,是一种广泛用于网站和Web应用程序的技术,它们在传统上使用分页的页面上托管大量内容。无限滚动涉及最初只加载一页内容。当用户向下滚动时,浏览器通过AJAX请求获取另一个页面。有几个Infinite Scrolling插件可以在现代浏览器中使用这种技术。
我使用 Locomotive、ScrollTrigger 和 Gsap 来制作动画。平滑滚动会导致额外的页面意外地在末尾滚动。当我检查网页时显示“has-scroll-init+has-s...
Laravel - 从 SQL 获取过滤数据并使用无限滚动分页 - 滚动后我仍然获得所有数据
当我使用带有无限滚动分页的 Laravel 分页并且在排序和过滤后还从 SQL 获取数据时,当我刷新页面时我得到了正确的数据,但是在滚动后我
Flutter 中 PageController 出现异常:“A PagingController was used after was Dispose”
Flutter 社区您好, 我在 Flutter 应用程序中遇到异常,该异常似乎与处置后使用的 PagingController 相关。但是,在我的实现中,我使用的是
Flutter getx无限滚动刷新listview每结束滚动
我正在尝试在列表视图中进行无限滚动。我正在从 API 获取数据。我正在使用 getx。我的列表视图总是在滚动结束时重建。我找不到我哪里做错了。 这就是我尝试的
Flutter - 如何使用 SliverAppBar 和无限滚动分页?
我在我的flutter应用程序中使用无限滚动分页插件。我还需要在我的页面中使用 SilverAppBar。这是我的代码: 返回脚手架( 主体:默认选项卡控制器( 长度:2, 孩子:
我正在ReactJS中创建一个网页,用于帖子提要(包含文本、图像、视频),就像无限滚动的Reddit一样。我已经创建了一个帖子组件,它将提供所需的
我正在创建一个网页,它将在屏幕上的指定坐标处显示对象(图像、矩形、圆形)。对象及其坐标存储在数据库中。坐标 x 和 y 位于 ...
如何在 q-select 上应用无限滚动?我看到有“虚拟滚动”事件返回此 json, {索引:11,从:0,到:11,方向:'增加',参考:VueComponent} 但问题...
滚动到底部可通过 Angular 中的 API 加载更多动态项
设备 <div class="col-6"> <label>device</label> <div class="input-group" style="height: 400px; overflow-y: auto;" (scroll)="onScroll($event)"> <ng-select formControlName="device_id" [items]="extractedOptions" bindLabel="label" bindValue="value" placeholder="Select device" appendTo="body" [multiple]="true" > <ng-template ng-label-tmp let-item="item"> {{ item.label }} </ng-template> <ng-template ng-option-tmp let-item="item" let-search="searchTerm" let-index="index"> {{ item.label }} </ng-template> </ng-select> <div style="color: red" *ngIf="shouldDisplayError('device_id') && hardwareform.get('device_id')!.hasError('required')"> *Field is required </div> </div> </div> import { Component, ElementRef, HostListener, ViewChild } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { Router, ActivatedRoute } from '@angular/router'; import { MatSnackBar } from '@angular/material/snack-bar'; import { DeviceService } from 'src/app/admin/services/device-device/device.service'; import { catchError, map } from 'rxjs/operators'; import { Observable, throwError } from 'rxjs'; @Component({ selector: 'app-create-device', templateUrl: './create-device.component.html', styleUrls: ['./create-device.component.scss'], }) export class DeviceComponent { @ViewChild('deviceSelect') deviceSelect!: ElementRef; deviceform!: FormGroup; loading: any; options: any = []; totalCount: any; extractedOptions: any; constructor( private fb: FormBuilder, private route: Router, private activatedRoute: ActivatedRoute, private _snackBar: MatSnackBar, private deviceService: DeviceService, ) {} title: string = 'New Device'; page: number = 1; IsEdit: boolean = false; items_per_page: number = 10; ngOnInit() { this.loadOptions(); } loadOptions() { this.loading = true; this.deviceService.getData(10, this.page).subscribe((response: any) => { const records = response.data.records; this.totalCount = response.data.count.total; this.extractedOptions = records.map((record: any) => ({ label: record.name, value: record.id, })); this.options = this.options.concat(this.extractedOptions); this.page++; this.loading = false; }); } shouldDisplayError(controlName: string): boolean { const control = this.deviceform.get(controlName); return control ? control.touched : false; } @HostListener('scroll',['$event']) onScroll(event: any) { console.log("testing") const target = event.target || event.srcElement; if (target.offsetHeight + target.scrollTop >= target.scrollHeight) { // Fetch more options when scrolled to the bottom this.loadOptions(); } } } 这是我的 HTML 和 TypeScript 文件。我成功地通过这些文件在 ng-select 下拉列表中获取了 10 条记录。但是,当我到达 ng-options 的底部时,滚动事件不会触发。我希望它触发滚动事件,以便我可以将更多动态内容加载到我的 ng-options 中。 我还检查了控制台是否有错误消息,但没有报告错误。 ng-select已经支持虚拟滚动。请利用此功能来适合您的代码!请在下面找到一个工作示例! import { Component, ElementRef, ViewChild } from '@angular/core'; import { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { RouterModule } from '@angular/router'; import { of } from 'rxjs'; import { delay } from 'rxjs/operators'; import { bootstrapApplication } from '@angular/platform-browser'; import 'zone.js'; import { NgSelectModule } from '@ng-select/ng-select'; import { CommonModule } from '@angular/common'; @Component({ selector: 'app-root', standalone: true, imports: [ FormsModule, NgSelectModule, CommonModule, ReactiveFormsModule, RouterModule, ], template: ` <div class="col-6"> <label>device</label> <div class="input-group" style="height:100vh;"> <ng-select [virtualScroll]="true" [items]="extractedOptions" bindLabel="label" bindValue="id" placeholder="Select device" (scroll)="onScroll($event)" (scrollToEnd)="onScrollToEnd()" [multiple]="true" > <ng-template ng-label-tmp let-item="item"> {{ item.label }} </ng-template> <ng-template ng-option-tmp let-item="item" let-search="searchTerm" let-index="index"> {{ item.label }} </ng-template> </ng-select> </div> </div> `, }) export class App { @ViewChild('deviceSelect') deviceSelect!: ElementRef; deviceform!: FormGroup; loading: any; options: any = []; totalCount: any; extractedOptions: any = []; numberOfItemsFromEndBeforeFetchingMore = 10; constructor() {} title: string = 'New Device'; page: number = 1; IsEdit: boolean = false; items_per_page: number = 10; ngOnInit() { this.loadOptions(); } loadOptions() { console.log('asdf') this.loading = true; const start = this.page; const data = new Array(50).fill(null).map((item, i) => ({ name: start + i, id: start + i, })); of({ data: { records: data, count: { total: 100, }, }, }) // .pipe(delay(1000)) .subscribe((response: any) => { const records = response.data.records; const extractedOptions = records.map((record: any) => ({ label: record.name, value: record.id, })); this.totalCount = response.data.count.total; this.extractedOptions.push(...extractedOptions); this.extractedOptions = [...this.extractedOptions] this.page++; this.loading = false; }); } onScrollToEnd() { this.loadOptions(); } onScroll(event: any) { console.log(event, this.extractedOptions.length); if (this.loading || this.extractedOptions.length > this.totalCount) { return; } if (event.end >= this.extractedOptions.length) { this.loadOptions(); } } shouldDisplayError(controlName: string): boolean { const control = this.deviceform.get(controlName); return control ? control.touched : false; } // @HostListener('scroll', ['$event']) // onScroll(event: any) { // console.log('testing'); // const target = event.target || event.srcElement; // if (target.offsetHeight + target.scrollTop >= target.scrollHeight) { // // Fetch more options when scrolled to the bottom // this.loadOptions(); // } // } } bootstrapApplication(App); 堆栈闪电战
带有infinite_scroll_pagination的Flutter Riverpod [需要建议]
我目前陷入了一些困惑。关于这个 Flutter 问题的任何帮助都会非常有帮助。多谢! 最近我爱上了Riverpod。我到处都在使用 Riverpod。Riv...
无法让 ngx-infinite-scroll 监听窗口滚动
我正在尝试实现 ngx-infinite-scroll 我无法让它执行我想要的操作,即监听浏览器或窗口滚动,以便我可以滚动内容并在需要时加载。 发生了什么事我...
感谢lharby对我上一篇文章的评论,我终于解决了无限滚动问题。非常感谢!问题是,当我超出滚动范围时,脚本会创建一个新的分页链接...
问题:获取双滚动条 - 删除纸张滚动条会使自动完成内容不可滚动,因此仅显示下拉列表可见高度中的内容。 如果我隐藏另一个
我使用这个无限滚动库。 https://pub.dev/packages/infinite_scroll_pagination 无限滚动分页 4.0.0 我的无限滚动位于副标题文本小部件下方! 像这样: 身体:
我想写一个分页函数,让我可以无限滚动,但我发现这很困难 下面是我的 API 调用的代码: CoinDataService 类:ObservableObj...
我编写了以下代码,试图制作一个无缝流动的图像,该图像处于无限滚动状态。 (也许无限滚动一词在这种情况下会产生误导,但它应该无缝滚动,...
我想通过 Jetpack Compose 中的 LazyColumn 实现无限滚动,无需任何库。换句话说,当用户滚动到末尾时,我需要调用一个侦听器。
JS 滚动事件未在 React 的 useEffect 中触发
我想在我的网站上添加无限滚动功能,但我遇到了滚动事件侦听器的问题,该事件侦听器在滚动页面时不会触发。 使用效果(()=> { 窗户。
我想在我的网站中添加无限滚动功能,但滚动事件监听器出现问题,当我滚动页面时它不会触发 使用效果(()=> { window.addEventListener("