溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

詳解Vue生命周期的示例

發(fā)布時間:2020-10-16 16:02:45 來源:腳本之家 閱讀:148 作者:半畝花田 欄目:web開發(fā)

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

 詳解Vue生命周期的示例

二 vue生命周期的栗子

 注意觸發(fā)vue的created事件以后,this便指向vue實例,這點(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" >
      {{a}}
    </div>
    <div class="test2" >
      我是內(nèi)容二
    </div>
    <script type="text/javascript">
      var myVue = new Vue({
        el: ".test",
        data: {
          a: "我是內(nèi)容,在控制臺輸入myVue.a=123456,可以改變我的值"
        },
        created: function () { 
          //在實例創(chuàng)建之后同步調(diào)用。此時實例已經(jīng)結(jié)束解析選項,這意味著已建立:數(shù)據(jù)綁定,計算屬性,方法,watcher/事件回調(diào)。
          //但是還沒有開始 DOM 編譯,$el 還不存在,但是實例存在,即this.a存在,可打印出來 。
          console.log("建立");
        },
        beforeCompile: function () {
          console.log("未開始編譯");
        },
        compiled: function () { 
          //在編譯結(jié)束后調(diào)用。此時所有的指令已生效,因而數(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")暫時觸發(fā)不了,不知道怎么解決
          //在 vm.$el 插入 DOM 時調(diào)用。必須是由指令或?qū)嵗椒ǎㄈ?$appendTo())插入,直接操作 vm.$el 不會 觸發(fā)這個鉤子。
          console.log("插入DOM成功");
        },
        detached :function () { //觸發(fā)事件 myVue.$destroy(true),其中參數(shù)true控制是否刪除DOM節(jié)點(diǎn)或者myVue.$remove()
          //在 vm.$el 從 DOM 中刪除時調(diào)用。必須是由指令或?qū)嵗椒▌h除,直接操作 vm.$el 不會 觸發(fā)這個鉤子。
          console.log("刪除DOM成功");
        },
        beforeDestroy: function () { //觸發(fā)方式,在console里面打myVue.$destroy();
          //在開始銷毀實例時調(diào)用。此時實例仍然有功能。
          console.log("銷毀前");
        },
        destroyed: function () {  //觸發(fā)方式,在console里面打myVue.$destroy();其中myVue.$destroy(true)是刪除DOM節(jié)點(diǎn),會觸發(fā)detached函數(shù),但是實例仍然存在
          //在實例被銷毀之后調(diào)用。此時所有的綁定和實例的指令已經(jīng)解綁,注意是解綁不是銷毀,所有的子實例也已經(jīng)被銷毀。
          console.log("已銷毀");
        }
    });
    </script>
  </body>
</html>

將上面代碼貼入后,在chrome控制臺進(jìn)行控制,剛開始載入頁面的時候觸發(fā)的事件是:

 詳解Vue生命周期的示例

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

詳解Vue生命周期的示例

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

詳解Vue生命周期的示例

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI