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