Ответ 1
Вы правы, многое может быть сделано как в конструкторе, так и в ionViewDidLoad
, и результат будет таким же...
Но основное различие между constructor
и ionViewDidLoad
заключается в том, что constructor
будет выполняться только один раз (когда компонент будет создан), но будет выполняться ionViewDidLoad
каждый раз отображается представление (загружено).
Например, если вы хотите загрузить данные из удаленного источника данных, если вы сделаете это в конструкторе, данные будут получены только один раз. Если бы эти данные могли быстро меняться, лучшим способом было бы получить его в методе ionViewDidLoad
, чтобы быть уверенным, что каждый раз, когда страница загружается, последние данные получаются и отображаются в представлении.
Еще один важный факт о ionViewDidLoad
заключается в том, что иногда вы хотите взаимодействовать с DOM (возможно, для инициализации карты).
В этом случае, если вы попытаетесь получить доступ к DOM в конструкторе, вы заметите, что DOM не готов к этой точке, и вы не сможете получить элемент карты. Правильный подход для этого был бы внутри ionViewDidLoad
, потому что в этот момент (как и название говорит) представление уже загружено и DOM теперь доступен.
UPDATE:
Так же, как @graphefruit, указанный в комментарии ниже, в новейших версиях Ionic 2, ionViewDidLoad
просто срабатывает, если страница не кэшируется. ionViewWillEnter
или ionViewDidEnter
будут запускаться каждый раз при вводе страницы.