Paso los datos correctos a this.items, pero no aparece después de cambiar a la vista, cuando el método ionViewWillEnter generalmente debería activarse. En cambio, lo hace después de escribir algo en mi barra de búsqueda.
Método ionViewWillEnter:
ionViewWillEnter() { ... this.http.post('http://www.example.com/select.php', creds, { headers: headers }) .map(res => res.json().User) .subscribe( data => this.data = data.map(user => user.Name), err => this.logError(err), () => console.log('Completed') ); this.items = this.data; }barra de búsqueda:
getItems(ev) { // Reset items back to all of the items this.initializeItems(); // same code as ionViewWillEnter // set val to the value of the ev target var val = ev.target.value; // if the value is an empty string don't filter the items if (val && val.trim() != '') { this.items = this.items.filter((item) => { return (item.toLowerCase().indexOf(val.toLowerCase()) > -1); }) } }mi html:
<ion-searchbar (ionInput)="getItems($event)"> </ion-searchbar> <ion-list> <ion-item *ngFor="let item of items"> {{ item }} ...Tenga en cuenta que las solicitudes Http (las que está utilizando en su función ionViewWillEnter() ) son asíncronas. Esto significa que cualquier código fuera del alcance de la solicitud continuará ejecutándose mientras su aplicación realiza una solicitud al servidor.
Realiza la asignación de this.data a this.items al final del evento del ciclo de vida, pero lo hace fuera de su solicitud Http. Realice la asignación dentro de los data => devolución de llamada, en su lugar.