20

実行ionic g page pageNameすると、.ts、.css、および .html ファイルが生成されます。

.ts ファイル内に呼び出された関数がionViewDidLoad(){}あり、ビューが表示される前にこれが出力されます。

これはコンストラクター自体で実行できると思いますか?

誰かがこの機能に関するブログや説明の参照を教えてもらえますか?

4

2 に答える 2

30

そうです、多くのことがコンストラクターまたはの両方で実行できionViewDidLoad、結果は同じになります...

ただし、 と の主な違いは、constructorionViewDidLoad (constructorコンポーネントがインスタンス化されたとき) 1 回だけ実行されますが、ionViewDidLoadメソッドはビューに入る (読み込まれる)たびに実行されることです。

たとえば、リモート データソースからデータをロードする場合、コンストラクターで実行すると、データは 1 回だけ取得されます。そのデータが十分に速く変化する可能性がある場合はionViewDidLoad、ページが読み込まれるたびに最新のデータが取得され、ビューに表示されるように、メソッドでデータを取得することをお勧めします。

に関するもう 1 つの重要な事実ionViewDidLoadは、DOM と対話したい場合があるということです (マップを初期化するためなど)。

その場合、コンストラクターで DOM にアクセスしようとすると、その時点で DOM の準備ができておらず、map 要素を取得できないことがわかります。ionViewDidLoadその時点で (名前が示すように) ビューが既に読み込まれており、DOM が利用可能になっているため、それを行う正しいアプローチは の内部になります。

アップデート:

以下のコメントで @graphefruit が指摘したように、Ionic 2 の最新バージョンではionViewDidLoad、ページがキャッシュされていない場合にのみ起動します。ionViewWillEnterまたはionViewDidEnter、ページに入るたびに起動されます

于 2016-10-05T10:24:37.927 に答える