infinite-scroll 相关问题

无限滚动,也称为无限滚动,是一种广泛用于网站和Web应用程序的技术,它们在传统上使用分页的页面上托管大量内容。无限滚动涉及最初只加载一页内容。当用户向下滚动时,浏览器通过AJAX请求获取另一个页面。有几个Infinite Scrolling插件可以在现代浏览器中使用这种技术。

类星体 q-选择无限滚动

如何在 q-select 上应用无限滚动?我看到有“虚拟滚动”事件返回此 json, {索引:11,从:0,到:11,方向:'增加',参考:VueComponent} 但问题...

回答 1 投票 0

滚动到底部可通过 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); 堆栈闪电战

回答 1 投票 0

延迟加载VS无限滚动

我以为延迟加载和无限滚动是同一回事,但今天我听说这是两个不同的东西。 这是真的吗?

回答 2 投票 0

带有infinite_scroll_pagination的Flutter Riverpod [需要建议]

我目前陷入了一些困惑。关于这个 Flutter 问题的任何帮助都会非常有帮助。多谢! 最近我爱上了Riverpod。我到处都在使用 Riverpod。Riv...

回答 1 投票 0

无法让 ngx-infinite-scroll 监听窗口滚动

我正在尝试实现 ngx-infinite-scroll 我无法让它执行我想要的操作,即监听浏览器或窗口滚动,以便我可以滚动内容并在需要时加载。 发生了什么事我...

回答 2 投票 0

无限滚动在滚动时创建分页子链接

感谢lharby对我上一篇文章的评论,我终于解决了无限滚动问题。非常感谢!问题是,当我超出滚动范围时,脚本会创建一个新的分页链接...

回答 1 投票 0

Material UI 自动完成+无限滚动在一起?

问题:获取双滚动条 - 删除纸张滚动条会使自动完成内容不可滚动,因此仅显示下拉列表可见高度中的内容。 如果我隐藏另一个

回答 2 投票 0

在flutter中不可能在列中无限滚动?

我使用这个无限滚动库。 https://pub.dev/packages/infinite_scroll_pagination 无限滚动分页 4.0.0 我的无限滚动位于副标题文本小部件下方! 像这样: 身体:

回答 1 投票 0

分页和无限滚动功能

我想写一个分页函数,让我可以无限滚动,但我发现这很困难 下面是我的 API 调用的代码: CoinDataService 类:ObservableObj...

回答 1 投票 0

Kivy 无缝/无限滚动效果

我编写了以下代码,试图制作一个无缝流动的图像,该图像处于无限滚动状态。 (也许无限滚动一词在这种情况下会产生误导,但它应该无缝滚动,...

回答 1 投票 0

Jetpack 编写无限滚动监听器

我想通过 Jetpack Compose 中的 LazyColumn 实现无限滚动,无需任何库。换句话说,当用户滚动到末尾时,我需要调用一个侦听器。

回答 1 投票 0

JS 滚动事件未在 React 的 useEffect 中触发

我想在我的网站上添加无限滚动功能,但我遇到了滚动事件侦听器的问题,该事件侦听器在滚动页面时不会触发。 使用效果(()=> { 窗户。

回答 1 投票 0

滚动事件未在 useEffect 中触发

我想在我的网站中添加无限滚动功能,但滚动事件监听器出现问题,当我滚动页面时它不会触发 使用效果(()=> { window.addEventListener("

回答 1 投票 0

使用Django分页器逐页显示多个Django表单但无法保存页面数据

我正在使用 Django 分页器创建一个输入页面,将多个表单显示为单个页面。分页器就位后,我想启用无限滚动。 我已经向聊天提问了...

回答 1 投票 0

无限滚动并使用RTK查询重复结果进行搜索

我正在尝试通过搜索实现帖子的无限滚动页面。它与 Reddit JSON API 配合使用。 没有常识中的分页。 Reddit api 返回列表。列出 JSON 响应包含...

回答 1 投票 0

如何将 RTK 查询响应附加到之前缓存的数据

使用 RTK 查询,我尝试向 Flatlist 添加无限滚动。如何将新响应与之前获取的数据集成?我还必须将现有数据替换为...

回答 1 投票 0

使用 RTKQuery 进行无限滚动

我正在尝试使用 RTKQuery 实现无限滚动。我几乎做到了,但面临着缓存行为问题。当组件第一次渲染请求时,滚动工作正常,但如果我移动到...

回答 1 投票 0

Ag 网格单元渲染器在滚动回到视图中之前不会实例化

当使用带有无限滚动和单元格渲染器的ag-grid 时,我注意到奇怪的行为。从数据源接收数据时,单元格渲染器似乎未实例化。向下滚动时...

回答 2 投票 0

vuejs 中的无限滚动

我正在卡片组件中实现无限滚动,其中每行有 3 张卡片,并且在到达页面末尾时,我想为下一页进行 api 调用以显示并显示 n...

回答 1 投票 0

React Native - 消耗太多 RAM,但没有在具有大数据的 FlatList 中释放

在 React Native 项目中,使用 React 查询在提要中引入无限滚动 - RAM 消耗越来越多,但没有释放看不见的组件的内存(开始...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.