xml - 如何在 ion-list angular 2 ionic 2 中显示已解析的 xml 提要数据

标签 xml angular typescript ionic-framework

我得到一个 <item> 的数组在控制台中,它们每个都包含标题、链接、描述、图像和 pubDate,但数据未显示在 ion-list 中。 . 你能帮帮我吗?

下面是函数load()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>

最佳答案

Observable 实现不正确:

//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();
     });
  });
}

关于xml - 如何在 ion-list angular 2 ionic 2 中显示已解析的 xml 提要数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41644433/

相关文章:

java - 用另一个元素包装 XStream 中的 xml 输出

Angular/ngx-translate 在内部模块中使用单独的翻译不起作用

javascript - 如何用数组值替换字符串中的多个占位符?

java - 如何从保存 BLOB 和 CLOB 数据的实体树生成 Xml

xml - Powershell 无法设置 xmlelement 的内部文本

java - 将 LinearLayout 调整为 ImageView 的宽度

html - Angular 5 无法调整 html 表格上的单元格高度

javascript - ionic 2 : creating a ng-repeat inside ion-slides

typescript - Vue.js 2.5 升级后无法使 Vue.js + TypeScript + RequireJS 堆栈工作

typescript - Azure Functions 可以是 Typescript 中的类吗?