詳解Vue生命周期的示例
一 vue的生命周期如下圖所示(很清晰)

二 vue生命周期的栗子
注意觸發(fā)vue的created事件以后,this便指向vue實(shí)例,這點(diǎn)很重要
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>vue生命周期</title>
<script src="../js/vue.js"></script>
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
</head>
<body>
<div class="test" style="border: 1px black dashed;padding: 8px;">
{{a}}
</div>
<div class="test2" style="border: 1px red solid;margin-top: 10px;padding: 8px;">
我是內(nèi)容二
</div>
<script type="text/javascript">
var myVue = new Vue({
el: ".test",
data: {
a: "我是內(nèi)容,在控制臺(tái)輸入myVue.a=123456,可以改變我的值"
},
created: function () {
//在實(shí)例創(chuàng)建之后同步調(diào)用。此時(shí)實(shí)例已經(jīng)結(jié)束解析選項(xiàng),這意味著已建立:數(shù)據(jù)綁定,計(jì)算屬性,方法,watcher/事件回調(diào)。
//但是還沒(méi)有開(kāi)始 DOM 編譯,$el 還不存在,但是實(shí)例存在,即this.a存在,可打印出來(lái) 。
console.log("建立");
},
beforeCompile: function () {
console.log("未開(kāi)始編譯");
},
compiled: function () {
//在編譯結(jié)束后調(diào)用。此時(shí)所有的指令已生效,因而數(shù)據(jù)的變化將觸發(fā) DOM 更新。但是不擔(dān)保 $el 已插入文檔。
console.log("編譯完成");
},
ready: function () {
//在編譯結(jié)束和 $el 第一次插入文檔之后調(diào)用,如在第一次 attached 鉤子之后調(diào)用。注意必須是由 Vue 插入(如 vm.$appendTo() 等方法或指令更新)才觸發(fā) ready 鉤子。
console.log("一切準(zhǔn)備好了");
},
attached :function () { //myVue.$appendTo(".test2")暫時(shí)觸發(fā)不了,不知道怎么解決
//在 vm.$el 插入 DOM 時(shí)調(diào)用。必須是由指令或?qū)嵗椒ǎㄈ?$appendTo())插入,直接操作 vm.$el 不會(huì) 觸發(fā)這個(gè)鉤子。
console.log("插入DOM成功");
},
detached :function () { //觸發(fā)事件 myVue.$destroy(true),其中參數(shù)true控制是否刪除DOM節(jié)點(diǎn)或者myVue.$remove()
//在 vm.$el 從 DOM 中刪除時(shí)調(diào)用。必須是由指令或?qū)嵗椒▌h除,直接操作 vm.$el 不會(huì) 觸發(fā)這個(gè)鉤子。
console.log("刪除DOM成功");
},
beforeDestroy: function () { //觸發(fā)方式,在console里面打myVue.$destroy();
//在開(kāi)始銷毀實(shí)例時(shí)調(diào)用。此時(shí)實(shí)例仍然有功能。
console.log("銷毀前");
},
destroyed: function () { //觸發(fā)方式,在console里面打myVue.$destroy();其中myVue.$destroy(true)是刪除DOM節(jié)點(diǎn),會(huì)觸發(fā)detached函數(shù),但是實(shí)例仍然存在
//在實(shí)例被銷毀之后調(diào)用。此時(shí)所有的綁定和實(shí)例的指令已經(jīng)解綁,注意是解綁不是銷毀,所有的子實(shí)例也已經(jīng)被銷毀。
console.log("已銷毀");
}
});
</script>
</body>
</html>
將上面代碼貼入后,在chrome控制臺(tái)進(jìn)行控制,剛開(kāi)始載入頁(yè)面的時(shí)候觸發(fā)的事件是:

在控制臺(tái)觸發(fā)detached 事件如下(注意DOM已刪除,但是實(shí)例仍然存在):

在控制臺(tái)觸發(fā)beforeDestroy和destroyed事件如下:(注意destroyed事件觸發(fā)后,是解綁實(shí)例,不是刪除實(shí)例)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue:axios請(qǐng)求本地json路徑錯(cuò)誤問(wèn)題及解決
這篇文章主要介紹了vue:axios請(qǐng)求本地json路徑錯(cuò)誤問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
vue3輸入框生成的時(shí)候如何自動(dòng)獲取焦點(diǎn)詳解
記錄一下自己最近開(kāi)發(fā)vue3.0的小小問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于vue3輸入框生成的時(shí)候如何自動(dòng)獲取焦點(diǎn)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09
Vue.js中關(guān)于偵聽(tīng)器(watch)的高級(jí)用法示例
Vue.js 提供了一個(gè)方法 watch,它用于觀察Vue實(shí)例上的數(shù)據(jù)變動(dòng)。下面這篇文章主要給大家介紹了關(guān)于Vue.js中關(guān)于偵聽(tīng)器(watch)的高級(jí)用法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-05-05
淺談基于Vue.js的移動(dòng)組件庫(kù)cube-ui
這篇文章主要介紹了基于Vue.js的移動(dòng)組件庫(kù)cube-ui,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12

