詳解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)。 //但是還沒有開始 DOM 編譯,$el 還不存在,但是實(shí)例存在,即this.a存在,可打印出來 。 console.log("建立"); }, beforeCompile: function () { console.log("未開始編譯"); }, 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(); //在開始銷毀實(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)行控制,剛開始載入頁面的時(shí)候觸發(fā)的事件是:
在控制臺(tái)觸發(fā)detached 事件如下(注意DOM已刪除,但是實(shí)例仍然存在):
在控制臺(tái)觸發(fā)beforeDestroy和destroyed事件如下:(注意destroyed事件觸發(fā)后,是解綁實(shí)例,不是刪除實(shí)例)
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vue實(shí)現(xiàn)登錄記住賬號(hào)密碼功能的思路與過程
最近在學(xué)習(xí)vue,發(fā)現(xiàn)了vue的好多坑,下面這篇文章主要給大家介紹了關(guān)于Vue實(shí)現(xiàn)登錄記住賬號(hào)密碼功能的思路與過程,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-11-11Vue中使用JsonView來展示Json樹的實(shí)例代碼
這篇文章主要介紹了Vue之使用JsonView來展示Json樹的實(shí)例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11element多選表格中使用Switch開關(guān)的實(shí)現(xiàn)
當(dāng)在做后臺(tái)管理系統(tǒng)的時(shí)候,會(huì)用到用戶的狀態(tài)管理這個(gè)功能,本文主要介紹了element多選表格中使用Switch開關(guān)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Vue使用枚舉類型實(shí)現(xiàn)HTML下拉框步驟詳解
本文分步驟給大家介紹了Vue使用枚舉類型實(shí)現(xiàn)HTML下拉框的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-02-02如何使用sm4js進(jìn)行加密和國密sm4總結(jié)
近期由于公司項(xiàng)目的需要開始研究國密SM4加密,下面這篇文章主要給大家介紹了關(guān)于如何使用sm4js進(jìn)行加密和國密sm4的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04vue 進(jìn)階之實(shí)現(xiàn)父子組件間的傳值
這篇文章主要介紹了vue 進(jìn)階之實(shí)現(xiàn)父子組件間的傳值,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04通過npm或yarn自動(dòng)生成vue組件的方法示例
這篇文章主要介紹了通過npm或yarn自動(dòng)生成vue組件的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02