ionViewDidLoad() 函数的目的是什么?
What is the purpose of the ionViewDidLoad() function?
在 运行 ionic g page pageName
我生成了 .ts,.css 和 .html 文件。
在 .ts 文件中,我有一个名为 ionViewDidLoad(){}
的函数,它会在我的视图出现之前打印出来。
我相信这可以在构造函数中完成?
有人可以给我一些关于此功能的博客或解释的参考吗?
你是对的,很多事情都可以在构造函数或 ionViewDidLoad
中完成,结果是一样的...
但是 constructor
和 ionViewDidLoad
之间的主要区别在于 constructor
只会执行一次(当组件被实例化时)但是ionViewDidLoad
方法将在每次 进入(加载)视图时执行。
例如,如果你想从远程数据源加载数据,如果你在构造函数中这样做,数据只会被获取一次。如果该数据变化足够快,更好的方法是在 ionViewDidLoad
方法中获取它,以确保每次加载页面时,获取最新数据并显示在视图中。
关于 ionViewDidLoad
的另一个重要事实是,有时您想与 DOM 进行交互(也许是为了初始化地图)。
在这种情况下,如果您尝试在构造函数中访问 DOM,您会注意到 DOM 到那时还没有准备好,您将无法获得地图元素。正确的做法是在 ionViewDidLoad
内,因为此时(就像名称所说的那样)视图已经加载并且 DOM 现在可用。
更新:
就像@graphefruit 在下面的评论中指出的那样,在最新版本的 Ionic 2 中,如果页面未缓存,ionViewDidLoad
就会触发。 ionViewWillEnter
或 ionViewDidEnter
将在每次进入页面时触发 。
constructor
首先被调用,每次页面实例化一次,在这里你可以做不引用 HTML DOM
的初始化
ionViewDidLoad
在页面 DOM 加载时调用,在页面显示之前,每个页面实例化一次,这里你可以做初始化需要 HTML DOM 准备就绪
ionViewWillEnter
在页面显示之前被调用,如果页面进入后台可能会调用多次 returns,如果可以在另一个页面中更改数据,您可以在此处刷新数据
ionViewDidEnter
是相同的,但在页面显示后立即调用,如果页面进入后台,可能会多次调用 returns,例如,您可以在页面变为时显示警报在前面
在 运行 ionic g page pageName
我生成了 .ts,.css 和 .html 文件。
在 .ts 文件中,我有一个名为 ionViewDidLoad(){}
的函数,它会在我的视图出现之前打印出来。
我相信这可以在构造函数中完成?
有人可以给我一些关于此功能的博客或解释的参考吗?
你是对的,很多事情都可以在构造函数或 ionViewDidLoad
中完成,结果是一样的...
但是 constructor
和 ionViewDidLoad
之间的主要区别在于 constructor
只会执行一次(当组件被实例化时)但是ionViewDidLoad
方法将在每次 进入(加载)视图时执行。
例如,如果你想从远程数据源加载数据,如果你在构造函数中这样做,数据只会被获取一次。如果该数据变化足够快,更好的方法是在 ionViewDidLoad
方法中获取它,以确保每次加载页面时,获取最新数据并显示在视图中。
关于 ionViewDidLoad
的另一个重要事实是,有时您想与 DOM 进行交互(也许是为了初始化地图)。
在这种情况下,如果您尝试在构造函数中访问 DOM,您会注意到 DOM 到那时还没有准备好,您将无法获得地图元素。正确的做法是在 ionViewDidLoad
内,因为此时(就像名称所说的那样)视图已经加载并且 DOM 现在可用。
更新:
就像@graphefruit 在下面的评论中指出的那样,在最新版本的 Ionic 2 中,如果页面未缓存,ionViewDidLoad
就会触发。 ionViewWillEnter
或 ionViewDidEnter
将在每次进入页面时触发 。
constructor
首先被调用,每次页面实例化一次,在这里你可以做不引用 HTML DOM
ionViewDidLoad
在页面 DOM 加载时调用,在页面显示之前,每个页面实例化一次,这里你可以做初始化需要 HTML DOM 准备就绪
ionViewWillEnter
在页面显示之前被调用,如果页面进入后台可能会调用多次 returns,如果可以在另一个页面中更改数据,您可以在此处刷新数据
ionViewDidEnter
是相同的,但在页面显示后立即调用,如果页面进入后台,可能会多次调用 returns,例如,您可以在页面变为时显示警报在前面