angular2 中的无限滚动,用于儿子数据加载 75%

Posted

技术标签:

【中文标题】angular2 中的无限滚动,用于儿子数据加载 75%【英文标题】:infinite scroll in angular2 for son data load 75% 【发布时间】:2018-06-12 06:03:12 【问题描述】:

我想创建无限滚动功能,其中最初只加载 JSON 数据的第一个值,即第一篇文章应该加载,向下滚动到页面的 3/4(75%) 部分后在底部加载下一篇文章,下一个加载的文章也会发生同样的事情。 我正在使用带有 rxjs observable 的 angular js: https://codeburst.io/angular-2-simple-infinite-scroller-directive-with-rxjs-observables-a989b12d4fb1

下面是代码: app.component.ts

import  Component  from '@angular/core';
import  Http, Response  from '@angular/http';
import  Observable  from 'rxjs/Observable';
import  NewsService  from './news.service';
import  NavBarComponent  from './navbar.component';
import 'rxjs/add/operator/map';

@Component(
  selector: 'app-root',
  styleUrls: ['./app.component.css'],
  templateUrl: './app.component.html',
  providers: [NewsService]
)
export class AppComponent 

 currentPage: number = 1;

  news: Array<any> = [];

  scrollCallback;

  constructor(private newsService: NewsService) 

    this.scrollCallback = this.getStories.bind(this);
  

  getStories() 
    return this.newsService.getLatestStories(this.currentPage).do(this.processData);
  

  private processData = (news) => 
    this.currentPage++;
    this.news = this.news.concat(news.json());
    console.log(this.news);
  


news.service.ts

import  Injectable  from '@angular/core';
import  Http  from '@angular/http';

const BASE_URL = 'https://www.eremnews.com/wp-json/wp/v2/posts?minified=true';

@Injectable()
export class NewsService 

  constructor(private http: Http)  

  getLatestStories(page: number = 1) 
    return this.http.get(`$BASE_URL/news?page=$page`);
  


app.component.html

<ul id="infinite-scroller"
  appInfiniteScroller
  scrollPerecnt="70"
  immediateCallback="true"
  [scrollCallback]="scrollCallback">
    <li *ngFor="let x of news">

     <h1>x.title.rendered | json</h1> <br>
    <figure style="padding:20px"><img [src]="x.post_thumbnail.thumbnail"></figure> 
      <div class="details">
        <p>x.content.rendered |json</p><br>
      </div>
      <p>x.date_gmt_lang |json</p>

    </li>
</ul>

在我的代码中,最初,所有数据都在第一页加载。我只想在页面向下滚动时加载文章,在路由器 URL 中我想显示文章的 ID。

【问题讨论】:

【参考方案1】:

您必须确保ul 元素具有滚动条,如源代码app.component.scss 中所示。 [] 在 html 中围绕 immediateCallback 属性。

否则,将您的代码与有效的source进行比较

【讨论】:

无限滚动正在工作,但最初,我只想从 JSON 加载第一篇文章。目前,在页面加载时,正在加载完整的 JSON,[…,…,…, …、…、…、…、…、…、…]0:id:1135427,日期:“2018-01-02T20:02:24”,date_gmt :“2018-01-02T16:02:24”,guid:…,修改:“2018-01-02T20:02:24”,…1:id:1135543,日期:“2018-01-02T19 :55:14", date_gmt: "2018-01-02T15:55:14", guid: …, 修改: "2018-01-02T19:55:14", …2: id: 1135440, 日期:“2018-01-02T19:48:08”,date_gmt:“2018-01-02T15:48:08”,guid:…,修改:“2018-01-02T19:48:08”,… 我想显示如下页面:eremnews.com/news/arab-world/1127149 JSON FILE:eremnews.com/wp-json/wp/v2/posts?minified=true

以上是关于angular2 中的无限滚动,用于儿子数据加载 75%的主要内容,如果未能解决你的问题,请参考以下文章

Flutter GridView 页脚(用于指示无限滚动的负载)

Angular2 Meteor,实现无限滚动的问题(滚动重置到顶部)

CSS属性不适用于jQuery无限滚动中的附加项目

Cordova android:在onsenui中无限滚动从数据库加载数据

无限滚动加载更多信息后,滑动滑块不起作用

使用 Angular 和 RxJS 实现的无限滚动加载