
~~~
module.exports = {
//props: ['父組建傳的值'],
data:function(){
lifecycle.push("data");
return {
msg: '各個階段,可以查看控制臺輸出,message from my-views',
title:'my_views',
lifecycle: lifecycle
}
},
//這里是route的生存周期
route:{
//waitForData: true, // 數據加載完畢后再切換試圖,也就是 點擊之后先沒反應,然后數據加載完,再出發過渡效果
canActivate:function(transition){
// canActivate階段,可以做一些用戶驗證的事情(是否可以被激活)
// 在驗證階段,當一個組件將要被切入的時候被調用。
},
activate:function(transition){
// 在激活階段被調用,在 activate 被斷定( resolved ,指該函數返回的 promise 被 resolve )。用于加載和設置當前組件的數據。(激活)
//this.$root.$set('header',this.title);
transition.next();
//此方法結束后,api會調用afterActivate 方法
//在aftefActivate中 會給組件添加 $loadingRouteData 屬性 并設置為true
},
data: function(transition) {
var _this = this;
// 在激活階段被調用,在 activate 被斷定( resolved ,指該函數返回的 promise 被 resolve )。用于加載和設置當前組件的數據
// 說明之前請求過 則不用再請求了
if(this.$root.myViewsData){
this.$data = this.$root.myViewsData;
transition.next();
console.log('已經請求過了不再請求數據');
return;
}
//將數據同步到根節點
this.$root.myViewsData = this.$data;
setTimeout(function(){
//這里 _this.$loadingRouteData 是 true
transition.next({msg:'加載后的數據'});
//在調用完transition.next 后,_this.$loadingRouteData 為 false
}.bind(this),4000);
},
canDeactivate:function(transition){
// 在驗證階段,當一個組件將要被切出的時候被調用。(是否可以被禁用)
},
deactivate: function (transition) {
// 在激活階段,當一個組件將要被禁用和移除之時被調用。(禁用)
}
},
beforeCreate:function(){
// 在實例初始化之后,數據觀測(data observer) 和 event/watcher 事件配置之前被調用。
},
created:function(){
// 實例已經創建完成之后被調用。在這一步,實例已完成以下的配置:數據觀測(data observer),屬性和方法的運算, watch/event 事件回調。然而,掛載階段還沒開始,$el 屬性目前不可見。
},
beforeCreate:function(){
// 在實例初始化之后,數據觀測(data observer) 和 event/watcher 事件配置之前被調用。
},
mounted:function(){
// el 被新創建的 vm.$el 替換,并掛載到實例上去之后調用該鉤子。如果 root 實例掛載了一個文檔內元素,當 mounted 被調用時 vm.$el 也在文檔內。
},
beforeUpdate: function(){
// 數據更新時調用,發生在虛擬 DOM 重新渲染和打補丁之前。
// 你可以在這個鉤子中進一步地更改狀態,這不會觸發附加的重渲染過程。
},
Update: function(){
// 由于數據更改導致的虛擬 DOM 重新渲染和打補丁,在這之后會調用該鉤子。
//當這個鉤子被調用時,組件 DOM 已經更新,所以你現在可以執行依賴于 DOM 的操作。然而在大多數情況下,你應該避免在此期間更改狀態,因為這可能會導致更新無限循環。
},
// <keep-alive> 包裹動態組件時,會緩存不活動的組件實例,而不是銷毀它們。
activated: function(){
// keep-alive 組件激活時調用。
},
deactivated: function(){
// keep-alive 組件停用時調用。
},
beforeDestroy:function(){
// 實例銷毀之前調用。在這一步,實例仍然完全可用。
},
destroyed:function(){
// Vue 實例銷毀后調用。調用后,Vue 實例指示的所有東西都會解綁定,所有的事件監聽器會被移除,所有的子實例也會被銷毀。
}
}
~~~