2017-06-23 31 views
2

我从远程URL抓取数据并将其传递到我的模板。然而,在页面的初始视图中,它不显示对象的第一个索引,只显示第二个索引。当我离开标签并返回时,它会显示两个对象。当我登录对象时,他们都在那里的初始负载。离子2模板在订阅数据之前运行

看这里后:Angular 2 First Item in Array Missing using *ngFor

我觉得它可能与missions.ts是入口部件做。但是,当我删除它,然后我得到关于失踪工厂的错误。

missions.ts

missions: any; 
    constructor(public navCtrl: NavController, public navParams: NavParams, public http: Http, private storage: Storage) { 
    this.http.get('http://hunt/api/getMissions').map(res => res.json()).subscribe(data => { 
      this.missions = data; 
      console.log(data); 
     }); 
    } 

Missions.html

<ion-content> 
    <ion-list> 
    <button ion-item *ngFor="let mission of missions" (click)="selectMission(mission.id)"> 
    {{ mission.name }} 
    </button> 
    </ion-list> 
</ion-content> 

回答

0

尝试调用this.http.get在ionViewDidLoad生命周期事件。听起来好像观察者正在返回第一个结果,然后离子准备好呈现结果。这将延迟观察值的订阅,直到离子准备好呈现模板。

+0

我试过了,它仍然没有加载第一个元素。 即使在没有http.get的定义数组中它仍然不会显示第一个。 – user2570937

0

对于任何有此问题的人来说,它实际上是格式化的。由于某些原因,scroll-content div并未应用边距顶部,而是隐藏了顶部导航栏后面的信息。我只是手动添加边距,一切都很好。