<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
偵聽器一般來說是用來監聽資料的變化,預設是在資料發生變化時執行。
監聽的資料名放到這裡面作為函數名,這個函數裡面有兩個引數,一個是新值,一個是舊值。
在vue中,使用watch來響應資料的變化,關於watch的用法大致有三種。
<div id="app"> <input type="text" v-model="firstName" /> </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> var vm=new Vue({ el:"#app", data:{ firstName:"張" }, watch:{ firstName:(newVal,oldVal){ //firstName即為你想監聽的資料的名稱,要監聽誰函數名就用誰的 如監聽v-model的firstName //newVal:表示改變後的值,即第一個形參,不要調換位置 //oldVal:表示改變前的值, console.log({newVal,oldVal}); // {newVal: "陳", oldVal: "張"} } //直接寫一個監聽處理常式,當每次監聽到cityName值發生改變時,執行函數。 //也可以在所監聽的資料後面直接加字串形式的方法名:firstName: 'nameChange' }, methods:{ nameChange(){ } } }) vm.firstName = "陳";//改變監聽的值 </script>
使用watch基本用法時有一個特點,就是當值第一次繫結的時候,不會執行監聽函數,只有值發生改變才會執行。如果我們需要在最初繫結值的時候也執行函數,則就需要用到immediate屬性。
watch: { firstName: { handler(newName, oldName) { this.fullName = newName + ' ' + this.lastName; }, { immediate: true } } }
監聽的資料後面寫成物件形式,包含handler方法和immediate,上面簡單的寫法我們寫的函數其實就是在寫這個handler方法、預設省略而已。
<div id="app"> <div> <p>Number: {{ myNumber }}</p> <p>Number: <input type="text" v-model.number="myNumber"></p> </div> </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> new Vue({ el: '#app', data: { myNumber: 'Dawei' }, watch: { myNumber: { handler(newVal, oldVal) { console.log('newVal', newVal); console.log('oldVal', oldVal); }, //immediate為true時則立即觸發回撥函數;如果為false,則和上面的例子一樣,不會立即執行回撥。 immediate: true } } }) </script> //handler方法就是你watch中需要具體執行的方法
對於物件或者物件中的屬性,我們如何監聽?那麼就介紹deep屬性。它的作用就是解決這個問題的關鍵。
<div id="root"> <p>obj.a: {{obj.a}}</p> <p>obj.a: <input type="text" v-model="obj.a"></p> </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> new Vue({ el: '#root', data: { obj: { a: 123 } }, watch: { obj: { handler(newName, oldName) { console.log(newName, oldName); }, immediate: true, deep:true } } }) </script>
上面的程式碼如果不加deep:true 那麼console中就不會執行,只執行第一次,輸出結果為undefined
預設情況下 handler 只監聽obj這個屬性它的參照的變化,我們只有給obj賦值的時候它才會監聽到。
這個時候就可以使用deep深入觀察,監聽器會一層層的往下遍歷,給物件的所有屬性都加上這個監聽器,但是這樣消耗過大。
本篇文章就到這裡了,希望能夠給你帶來幫助,也希望您能夠多多關注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