29

我将使用哪一个来初始化数据,为什么?

ngOnInit() {
    this.type = 'category';
    this.getData();
    this.setData();
}

ionViewDidLoad() {
    this.type = 'category';
    this.getData();
    this.setData();
}
4

3 回答 3

69

ngOnInit是 Angular2 调用的生命周期钩子,用于指示 Angular 已完成创建组件。

ionViewDidLoad与 Ionic 的NavController生命周期事件有关。它在页面加载后运行。此事件仅在每个页面创建时发生一次。

基本上两者都是初始化组件数据的好地方。

但是为了使用ngOnInit,您需要实现 Angular 的OnInit类,另一方面ionViewDidLoad,只能为从NavController.

所以我会说使用堆栈ionViewDidLoad中的组件和其他组件。NavControllerngOnInit

于 2017-04-30T06:11:16.800 回答
3

ionViewDidLoad 触发与 NavController 密切相关。

如果您需要一个独立于 NavController 呈现的组件的挂钩(并非 ionic 2 应用程序中的所有组件都是页面),您应该使用角度生命周期挂钩而不是ionic navcontroller hooks

现在,哪一个适合您,这取决于实施案例。

无论如何,所有这些钩子的名称在大多数情况下都是不言自明的。

于 2017-07-12T16:50:16.483 回答
2

这两个函数的工作方式相同,它们在视图最初加载到 DOM 时被调用。

关于 ionic2s 生命周期钩子的很棒的博客

于 2017-04-30T06:01:52.670 回答