Thanks matheo
search.html
<ion-list>
<ion-item-sliding *ngFor="let item of employeeModels">
<ion-item>
{{ formatEmployee(item) }}
<ion-avatar item-left><img [src]="item.avatar64 ? item.avatar64 : 'images/blank-profile-picture.png'"></ion-avatar>
<h2>{{item.firstName}}</h2>
<p>{{item.categories[0].name}} {{item.subCategories[0].name}} {{item.time}} <rating></rating></p>
</ion-item>
<ion-item-options>
<button primary (click)="alert('todo')"><ion-icon name="text"></ion-icon>Message</button>
<button light (click)="alert('todo')"><ion-icon class="ion-ios-heart"></ion-icon>Favourite</button>
</ion-item-options>
</ion-item-sliding>
</ion-list>
<ion-infinite-scroll (ionInfinite)=“doInfinite($event)”>
search.ts
import { Component, ChangeDetectionStrategy, enableProdMode, ChangeDetectorRef } from '@angular/core';
import { NavController, Loading } from 'ionic-angular';
import { EmployeeService } from '../service/employeeService';
import { UtilityService } from '../utils/utilityService';
import { Employee } from '../model/employee';
import { Rating } from '../utils/rating/rating';
//enableProdMode();
@Component({
templateUrl: 'build/pages/search/search.html',
providers: [EmployeeService, UtilityService],
changeDetection: ChangeDetectionStrategy.OnPush,
directives: [Rating]
})
export class SearchPage {
private MAX_RESULTS: number = 20;
private firstResult: number = 0;
private ref: ChangeDetectorRef;
private nav: NavController = null;
private loading: Loading = Loading.create();;
private employeeService: EmployeeService = null;
private utilityService: UtilityService = null;
private employeeModel: Employee = null;
private employeeModels: Employee[] = [];
constructor(ref: ChangeDetectorRef, nav: NavController, employeeService: EmployeeService, utilityService: UtilityService) {
this.ref = ref;
this.nav = nav;
this.employeeService = employeeService;
this.utilityService = utilityService;
}
ngOnInit() {
this.getEmployeeRange();
}
doInfinite(infiniteScroll: any) {
this.firstResult += this.MAX_RESULTS;
this.employeeService.getEmployeeRange(this.firstResult, this.MAX_RESULTS).then((employeeModels: Employee[]) => {
for (var index = 0; index < employeeModels.length; index++) {
this.employeeModels.push(employeeModels[index]);
}
infiniteScroll.complete();
});
}
getEmployeeRange() {
this.nav.present(this.loading);
this.employeeService.getEmployeeRange(this.firstResult, this.MAX_RESULTS).then((employeeModels: Employee[]) => {
for (var index = 0; index < employeeModels.length; index++) {
this.employeeModels.push(employeeModels[index]);
}
this.loading.dismiss();
this.ref.markForCheck();
});
}
rating.ts
import {Component} from '@angular/core';
@Component({
selector: 'rating',
template: `
<span tabindex="0">
<template ng-for [ng-for-of]="range" #index="index">
<span class="sr-only">(*)</span>
<i class="glyphicon glyphicon-star"></i>
</template>
</span>
`
})
export class Rating {
private range: Array<number> = [1, 2, 3, 4, 5];
}