【问题标题】:What is the purpose of the ionViewDidLoad() function?ionViewDidLoad() 函数的目的是什么?
【发布时间】:2018-08-24 16:35:09
【问题描述】:

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

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

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

谁能给我一些关于此功能的博客或解释的参考?

【问题讨论】:

    标签: angular typescript ionic-framework ionic2 ionic3


    【解决方案1】:

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

    但是constructorionViewDidLoad之间的主要区别constructor只会被执行一次(当组件被实例化时)但是ionViewDidLoad方法会被执行每次进入(加载)视图。

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

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

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

    更新:

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

    【讨论】:

    • 和 angular2 OnInit 一样吗?如果是这样,为什么不使用 OnInit ?
    • @sebaferreras 您的答案不再正确。 ionViewDidLoad 仅在页面未缓存时触发。 ionicframework.com/docs/v2/2.0.0-rc.0/api/navigation/… ionViewWillEnterionViewDidEnter 将在每次进入页面时触发
    • 感谢@graphefruit 指出这一点,我已经更新了答案:)
    【解决方案2】:

    constructor首先被调用,每次页面实例化一次,在这里您可以进行不引用 HTML DOM 的初始化

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

    ionViewWillEnter在页面显示之前被调用,如果页面进入后台并返回可能会多次调用,如果可以在另一个页面中更改数据,您可以在此处刷新数据

    ionViewDidEnter 相同,但在页面显示后调用,如果页面进入后台并返回,可能会调用多次,例如,您可以在页面变为前面时显示警报

    【讨论】:

      猜你喜欢
      • 2017-02-10
      • 2012-01-14
      • 2013-05-22
      • 2012-06-08
      • 2021-06-09
      • 2014-01-19
      • 2018-04-24
      • 2020-01-24
      相关资源
      最近更新 更多