正在運行ionic g page pageName
我生成了.ts,.css和.html文件。ionViewDidLoad()函數的用途是什麼?
在.ts文件中我有一個叫做ionViewDidLoad(){}
的函數,在我的視圖出現之前就會打印出來。
這可以在構造函數本身完成,我相信嗎?
有人可以給我一些有關此功能的博客或解釋的參考?
正在運行ionic g page pageName
我生成了.ts,.css和.html文件。ionViewDidLoad()函數的用途是什麼?
在.ts文件中我有一個叫做ionViewDidLoad(){}
的函數,在我的視圖出現之前就會打印出來。
這可以在構造函數本身完成,我相信嗎?
有人可以給我一些有關此功能的博客或解釋的參考?
你說得對,很多事情可無論是在構造函數或ionViewDidLoad
,結果是一樣的做...
但constructor
和ionViewDidLoad
之間的主要區別是constructor
將只執行一次(當組件被實例化時),但是每次執行方法該視圖被輸入(加載)。例如,如果要從遠程數據源加載數據,如果在構造函數中執行該操作,則只會獲取一次數據。如果數據可能變化得足夠快,更好的方法是在ionViewDidLoad
方法中獲取它,以確保每次加載頁面時,都會獲取最新數據並顯示在視圖中。
關於的另一個重要事實是,有時您想與DOM進行交互(可能是爲了初始化地圖)。ionViewDidLoad
在這種情況下,如果您嘗試訪問構造函數中的DOM,您將會注意到DOM沒有準備好該點,並且您將無法獲取地圖元素。正確的做法是在ionViewDidLoad
之內,因爲在那個時候(就像名稱所述)視圖已經加載,並且DOM現在可用。
UPDATE:
就像@graphefruit在下面的評論中指出,在離子2的最新版本ionViewDidLoad
如果頁面不被緩存只是觸發。每次輸入頁面時,將會觸發ionViewWillEnter
或ionViewDidEnter
。
constructor
被調用之前所有的,一旦每個頁面的實例,在這裏你可以做初始化這並不是指的HTML DOM
ionViewDidLoad
是當頁面的DOM已經加載調用,比之前的頁面顯示,也可以每頁實例化一次,在這裏你可以做初始化它需要HTML DOM準備好
ionViewWillEnter
在頁面顯示之前被調用,也許多次如果頁面在後臺運行並返回,在這裏你如果可以在其他頁面中更改數據,則可以刷新數據
ionViewDidEnter
是相同的,但在頁面顯示後即可調用,也可以在頁面進入後臺並返回時多次調用,例如,當頁面變爲前面時可以顯示提醒
與之相同angular2 OnInit?如果是這樣,爲什麼不使用OnInit? – Sam
@sebaferreras你的答案不再正確。如果頁面沒有被緩存,ionViewDidLoad會觸發。 https://ionicframework.com/docs/v2/2.0.0-rc.0/api/navigation/NavController/'ionViewWillEnter'或'ionViewDidEnter'將在每次輸入頁面時觸發 – graphefruit
感謝您指出@graphefruit,我已經更新了答案:) – sebaferreras