ionViewDidLoad()函数的目的是什么?

时间:2016-10-05 09:17:05

标签: angular typescript ionic-framework ionic2 ionic3

在运行ionic g page pageName时,我会生成.ts,.css和.html文件。

在.ts文件中,我有一个名为ionViewDidLoad(){}的函数,在我的视图出现之前会打印出来。

我相信这可以在构造函数中完成吗?

有人可以给我一些关于此功能的博客或解释吗?

2 个答案:

答案 0 :(得分:29)

你是对的,很多事情都可以在构造函数或ionViewDidLoad中完成,结果也是一样的......

constructorionViewDidLoad 之间的主要区别在于constructor只会被执行一次(当组件被实例化时),但是ionViewDidLoad每次输入(加载)视图时都会执行

例如,如果要从远程数据源加载数据,如果在构造函数中执行此操作,则只能获取一次数据。如果该数据的变化速度足够快,更好的方法是在ionViewDidLoad方法中获取它,以确保每次加载页面时,都会获取最新数据并在视图中显示。

关于ionViewDidLoad 的另一个重要事实是,有时你想与DOM交互(可能是为了初始化地图)。

在这种情况下,如果您尝试在构造函数中访问DOM,您会注意到DOM没有准备就绪,并且您无法获取map元素。正确的方法是在ionViewDidLoad内部,因为那时(就像名字所说的那样)视图已经加载,DOM现在可用了。

<强>更新

就像@graphefruit在下面的评论中指出的那样,在最新版本的Ionic 2中,如果页面没有被缓存, ionViewDidLoad就会触发。每次输入页面时都会触发ionViewWillEnterionViewDidEnter

答案 1 :(得分:8)

首先调用

constructor,每次实例化一次页面,这里你可以进行不引用HTML DOM的初始化

ionViewDidLoad在页面DOM加载时被调用,在显示页面之前,也是每页实例化一次,这里你可以做初始化,需要HTML DOM准备就绪

在页面显示之前调用

ionViewWillEnter,如果页面在后台运行并返回,可能会多次调用,如果可以在另一页面中更改数据,则可以刷新数据

ionViewDidEnter是相同的,但是在页面显示之后调用,如果页面在后台进行并返回,可能会多次调用,例如,当页面出现在前面时,您可以显示警告