Cómo mostrar datos de feed XML analizados en ion-list en Angular 2 Ionic 2
Estoy obteniendo un arreglo de <item> en la consola, cada uno de ellos contiene título, enlace, descripción, imagen y pubDate, pero los datos no se muestran en el ion-list. ¿Podrías ayudarme?
A continuación se encuentra la función load() en rss-service.ts
load() {
return Observable.create(s => {
this.http.get('http://url.xml')
.map(res => res.text())
.subscribe(data => {
if(data) {
var parser = new DOMParser();
var xmlData = parser.parseFromString(data, "application/xml");
var items = xmlData.querySelectorAll("item");
for (var index = 0; index < items.length; index++) {
var element = items[index];
console.log(element);
}
}
});
});
}
home.ts
export class HomePage {
public entries: any = [];
constructor(public rssService:RssService, public nav:NavController) {
}
ionViewDidLoad(){
this.rssService.load().subscribe(
data => {
this.entries.push(data);
}
);
}
openPage(entry) {
console.log('open page called with ' + entry.title);
this.nav.push(DetailPage, {selectedEntry:entry});
}
}
home.html<ion-header>
<ion-navbar color="primary">
<ion-title text-center>
App Name
</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding>
</ion-refresher>
<ion-list>
<ion-item *ngFor="let entry of entries" (click)="openPage(entry)" text-wrap>
<h2 class="titles">{{entry.title}}</h2>
</ion-item>
</ion-list>
</ion-content>
Respuesta #1
La implementación de Observable es incorrecta:
//example
var result = Rx.Observable.create(function (subscriber) {
subscriber.next(Math.random());
subscriber.next(Math.random());
subscriber.next(Math.random());
subscriber.complete();
});
//fix, you should also add proper error handling see subscriber.error(..)
load() {
return Observable.create(subscriber => {
this.http.get('http://url.xml')
.map(res => res.text())
.subscribe(data => {
if(data) {
var parser = new DOMParser();
var xmlData = parser.parseFromString(data, "application/xml");
var items = xmlData.querySelectorAll("item");
for (var index = 0; index < items.length; index++) {
var element = items[index];
console.log(element);
}
subscriber.next(items);
}
else
{
subscriber.next([]);
}
subscriber.complete();
});
});
}
