gpt4 book ai didi

javascript - 带有ngx无限滚动的Angular 4

转载 作者:行者123 更新时间:2023-11-29 16:04:33 26 4
gpt4 key购买 nike

我正在尝试使用 ngx-infinite-scroll 添加无限滚动在我的 Angular 4 项目中。

数组数据有大约 800 个来自 API 的帖子。

最初,我想显示 20 个帖子,每滚动一次页面,它就会再显示 20 个帖子。

目前,每当我向下滚动时,我都能看到控制台日志消息(scrolled!)

但我不知道如何在滚动时将 20 个帖子附加到表格中。

这是我正在尝试的代码。

onScrollDown 函数

onScrollDown(){        
this.dataService.getPosts().subscribe((posts)=>{
for (let post of posts){
let data = '<tr><td>'+ post.title +'</td><td>'+ post.geo +'</td><td>'+ post.Telephone +'</td><td>'+ post.category +'</td><td>Detail</td></tr>';
$('table.feed tbody').append(data);
}
});

.

这是组件代码。
posts.component.html

    <div *ngIf="posts?.length > 0;else noPosts" class="search-results" infinite-scroll [infiniteScrollDistance]="2" [infiniteScrollUpDistance]="2" [infiniteScrollThrottle]="50" (scrolled)="onScrollDown()" [scrollWindow]="false">
<table class="responsive-table feed striped">
<thead>
<tr>
<th>Name</th>
<th>State/City</th>
<th>Phone</th>
<th>Category</th>
<th></th>
</tr>
</thead>
<tbody>
<tr *ngFor="let post of posts | filter:term">
<td>{{post.title}}</td>
<td>{{post.geo}}</td>
<td>{{post.Telephone}}</td>
<td>{{post.category}}</td>
<td>Detail</td>
</tr>
</tbody>
</table>
</div>

posts.component.ts

    import { Component, OnInit } from '@angular/core';
import { DataService } from '../../services/data.service';
import { FilterPipe } from '../../filter.pipe';
declare var jquery:any;
declare var $ :any;

@Component({
selector: 'feed',
templateUrl: './feed.component.html',
styleUrls: ['./feed.component.css']
})

export class FeedComponent implements OnInit {

term : '';
posts: Post[];

constructor(private dataService: DataService) { }

ngOnInit() {
this.dataService.getPosts().subscribe((posts)=>{
this.posts = posts.slice(0,10);
});
}

onScrollDown(){
console.log("scrolled!");
}

interface Post{
id:number,
title:string,
contact:string,
Address:string,
Telephone:number,
Email:string,
Website:string,
Establishment:string,
sector:string,
category:string,
}

最佳答案

首先,像这样保存你的原始数组

 this.dataService.getPosts().subscribe((response)=>{                  
this.originalPosts = response;
this.posts = response.slice(0,20);
});

onScrollDown(){
if(this.posts.length < this.originalPosts.length){
let len = this.posts.length;

for(i = len; i <= len+20; i++){
this.posts.push(this.originalPosts[i]);
}
}
}

只需将它推到同一个数组上就不需要直接将它附加到表中,angular 会自行管理,使用 angular 时太容易了。

关于javascript - 带有ngx无限滚动的Angular 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47587231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com