Vue在頁面加載時,需要等待DOM元素完全加載完成后才能渲染視圖,否則可能會出現渲染不完整的情況,影響用戶體驗。因此,Vue提供了一個domready事件,當DOM元素完全加載完成后觸發該事件
domready事件可以通過Vue實例的$nextTick方法調用進行綁定,如下:
new Vue({ el: '#app', data: { message: 'Hello Vue.js!' }, mounted: function () { this.$nextTick(function () { // Code that will run only after the // entire view has been rendered console.log('domready') }) } })
以上代碼中,在Vue實例中加入mounted鉤子函數,用于在Vue實例掛載到DOM元素后立即執行的回調函數。在mounted函數中,調用this.$nextTick方法,在DOM元素渲染完全后執行傳入的回調函數。在回調函數中輸出domready即表示domready事件已經被觸發了。
除了在mounted鉤子函數中綁定domready事件,也可以使用Vue自定義指令v-domready直接在DOM元素上綁定。如下:
Vue.directive('domready', { inserted: function (el) { Vue.nextTick(function () { console.log('domready') }) } })
以上代碼中,使用Vue.directive方法定義自定義指令domready,通過inserted鉤子函數在DOM元素插入到頁面中并渲染完成后立即執行回調函數。在回調函數中輸出domready即表示domready事件已經被觸發了。使用自定義指令可以方便地在模板中綁定domready事件,減少冗余代碼。
上一篇vue動態導入模塊
下一篇python 編程之道