<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
因為很多頁面需要用到<keep-alive>,我就用其將承載頁面的父元件包裹了,但這也帶來了一些問題。比如新寫的頁面中,進入下個頁面還在呼叫上個頁面的資料(以前沒有遇到過,不清楚是是什麼原因),即已經切換路由卻無法自己destory掉,打紀錄檔發現確實沒有跑destoryed這個生命週期函數。
在需要刪除的元件中的deactivated生命週期函數中手動呼叫this.$destroy('componentName'),這裡的componentName即這個元件的name,使用後發現destoryed函數確實可以正常使用了,而且進入下一個頁面也不會再報錯說缺少這個頁面的資料。
傳入設定物件,瞭解設定物件中的各個屬性
var VM = new Vue({ el: '#app', // 表示當我們new的這個Vue範例, 要控制頁面上的那個區域 data: { // data屬性中,存放的是el中要用到的資料,這裡的data就是MVVM中的M專門用來儲存每個頁面的資料 message: 'Hello Vue!' }, methods : {}, // 這個methods屬性中定義了當前Vue範例所有可用的方法,主要寫業務邏輯 computed: {}, // 在computed中,可以定一些屬性, 這些屬性叫做計算屬性,計算屬性的本質就是一個方法,只不過我們在使用這些計算屬性的時候是吧它們的名稱直接當做屬性來使用的,並不會把計算屬性當做方法去呼叫 filters : {}, // 這個filters屬性中定義了當前Vue範例中所有可用的過濾的方法 watch: {}, // 使用這個屬性,可以監聽data中資料的變化,然後觸發這個watch中對應的function處理常式 router, // 掛載路由物件 directives:{}, // 這個directives屬性定義了當前Vue範例中所有可用的自定義指令 beforeCreate () {}, // 生命週期函數: 表示範例完全被建立之前,會執行這個函數 created () {}, // 生命週期函數: 表示範例被建立之後 beforeMounted () {}, // 生命週期函數: 表示模板已經編譯完成,但是還沒有把模板渲染到頁面中 mounted () {}, // 生命週期函數:表示模板已經編譯完成,記憶體中的模板已經真實的渲染到了頁面中去,已經可以看到渲染好的頁面了 beforeUpdate () {}, // 生命週期函數: 表示當前介面還沒有被更新,資料肯定被更新了 update () {}, // 生命週期函數: 表示當前頁面和資料保持同步了,都是最新的 beforeDestroy () {}, // 生命週期函數: 表示Vue範例已經從執行階段進入到銷燬階段 destroyed () {} // 生命週期函數: 表示元件已經完全被銷燬了})
destroy()只是完全銷燬一個範例,清理它與其它範例的連線,解綁它的全部指令及事件監聽器。
參見官方檔案: https://cn.vuejs.org/v2/api/#vm-destroy
它並不是用來清除已有頁面上的DOM的。實現功能包括:
(1) 包括Watcher物件從其所在Dep中釋放
if (vm._watcher) { vm._watcher.teardown() } let i = vm._watchers.length while (i--) { vm._watchers[i].teardown() } // remove reference from data ob // frozen object may not have observer. if (vm._data.__ob__) { vm._data.__ob__.vmCount-- }
(2) 移除所有事件的監聽
vm.$off()
(3) patch一個null目的是觸發所有的destroy勾點。
vm.__patch__(vm._vnode, null) return function patch (oldVnode, vnode, hydrating, removeOnly, parentElm, refElm) { /*vnode不存在則直接呼叫銷燬勾點*/ if (isUndef(vnode)) { if (isDef(oldVnode)) invokeDestroyHook(oldVnode) return } ... }
想要清除頁面的 DOM,需要使用 v-if,或者修改 v-for 中涉及到的陣列或物件。
另外,呼叫 app.$destroy() 之後,你會發現,app.message = ‘Yes, he is a boy.’ 不會對頁面產生影響。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45