Advertisement
Guest User

how create infinite scroll ionic 2 ?

a guest
Oct 26th, 2016
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.07 KB | None | 0 0
  1. providers
  2. ==========================
  3. import { Injectable } from '@angular/core';
  4. import { Http } from '@angular/http';
  5. import 'rxjs/add/operator/map';
  6.  
  7. @Injectable()
  8. export class NewsService {
  9. data: any;
  10. keyword:any;
  11.  
  12. constructor(public http: Http) {
  13. this.data = null;
  14. }
  15. load() {
  16. if (this.data) {
  17. return Promise.resolve(this.data);
  18. }
  19. return new Promise(resolve => {
  20. let url = "http://127.0.0.1:85/wordpress/wp-json/wp/v2/posts";
  21. this.http.get(url)
  22. .map(res => res.json())
  23. .subscribe(data => {
  24.  
  25. this.data = data;
  26. resolve(this.data);
  27. });
  28. });
  29. }
  30. loadPostById(id: number) {
  31. if (this.data) {
  32. return Promise.resolve(this.data);
  33. }
  34. return new Promise(resolve => {
  35. let url = "http://127.0.0.1:85/wordpress/wp-json/wp/v2/posts/" + id;
  36. this.http.get(url)
  37. .map(res => res.json())
  38. .subscribe(data => {
  39. this.data = data;
  40. resolve(this.data);
  41. });
  42. });
  43. }
  44. //infiniteScroll
  45. loadMorePost(PageId: number) {
  46. if (this.data) {
  47. return Promise.resolve(this.data);
  48. }
  49. return new Promise(resolve => {
  50. let url = "http://127.0.0.1:85/wordpress/wp-json/wp/v2/posts/?per_page=10&page=" + PageId;
  51. this.http.get(url)
  52. .map(res => res.json())
  53. .subscribe(data => {
  54. this.data = data;
  55. resolve(this.data);
  56. });
  57. });
  58. }
  59.  
  60. }
  61. =========================
  62. page 2 html
  63. =====================
  64. <ion-header>
  65. <ion-navbar>
  66. <button ion-button menuToggle>
  67. <ion-icon name="menu"></ion-icon>
  68. </button>
  69. <ion-title>Headline</ion-title>
  70. </ion-navbar>
  71. <ion-searchbar
  72. [(ngModel)]="keyword"
  73. [showCancelButton]="shouldShowCancel"
  74. (ionInput)="onCancel($event)"
  75. (keyup.enter)="Search(keyword,$event)">
  76. </ion-searchbar>
  77. </ion-header>
  78.  
  79. <ion-content>
  80. <ion-refresher (ionRefresh)="doRefresh($event)">
  81. <ion-refresher-content></ion-refresher-content>
  82. </ion-refresher>
  83. <ion-card *ngFor="let x of news" (click)="itemTapped($event, x.id)">
  84. <img src="{{x.featured_image}}"/>
  85. <ion-card-content>
  86. <ion-card-title>
  87. {{x.title.rendered}}
  88. </ion-card-title>
  89. <div [innerHTML]="x.excerpt.rendered">
  90. </div>
  91. </ion-card-content>
  92. </ion-card>
  93. <ion-infinite-scroll (ionInfinite)="doInfinite($event)">
  94. <ion-infinite-scroll-content
  95. loadingSpinner="bubbles"
  96. loadingText="Loading more data...">
  97. </ion-infinite-scroll-content>
  98. </ion-infinite-scroll>
  99.  
  100. </ion-content>
  101.  
  102. ====================
  103. Page 2 ts
  104. ====================
  105. import { Component} from '@angular/core';
  106. import {PageDetail} from "../../pages/detail/detail";
  107. import { NavController, LoadingController } from 'ionic-angular';
  108. import {NewsService} from '../../providers/news-service';
  109. import 'rxjs/add/operator/map';
  110. @Component({
  111. selector: 'page-page2',
  112. templateUrl: 'page2.html',
  113. })
  114. export class Page2 {
  115. public news:any;
  116. public PageId:any;
  117. icons: string[];
  118. items: Array<{title: string, note: string, icon: string}>;
  119.  
  120. constructor(
  121. public navCtrl: NavController,
  122. private newsData: NewsService,
  123. private loadingCtrl:LoadingController ) { }
  124. ionViewWillEnter(){
  125. let loading = this.loadingCtrl.create({
  126. content: 'Please wait...'
  127. });
  128. this.loadNews();
  129. loading.present();
  130. setTimeout(() => {
  131. loading.dismiss();
  132. }, 1000);
  133. }
  134. loadNews(){
  135. this.newsData.load()
  136. .then(data => {
  137. this.news = data;
  138. console.log(this.news);
  139. });
  140. }
  141. doRefresh(refresher) {
  142. this.loadNews();
  143. console.log('Begin async operation', refresher);
  144.  
  145. setTimeout(() => {
  146. console.log('Async operation has ended');
  147. refresher.complete();
  148. }, 2000);
  149. }
  150. doInfinite(infiniteScroll) {
  151.  
  152. setTimeout(() => {
  153.  
  154. infiniteScroll.complete();
  155. }, 2000);
  156. }
  157. itemTapped(event, item) {
  158. this.navCtrl.push(PageDetail, {
  159. item: item
  160. });
  161. }
  162.  
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement