Vue中偵聽器的基本用法示例
前言
Vue 通過 watch 選項(xiàng)提供了一個(gè)更通用的方法,來響應(yīng)數(shù)據(jù)的變化。當(dāng)需要在數(shù)據(jù)變化時(shí)執(zhí)行異步或開銷較大的操作時(shí),這個(gè)方式是最有用的。
一、偵聽器的基本用法
<div id="demo">{{ fullName }}</div>
var vm = new Vue({ el: '#demo', data: { firstName: 'Foo', lastName: 'Bar', fullName: 'Foo Bar' }, watch: { firstName: function (val) { this.fullName = val + ' ' + this.lastName }, lastName: function (val) { this.fullName = this.firstName + ' ' + val } } })
這段代碼的作用就是監(jiān)聽firstName和fullName,當(dāng)它們發(fā)生變化的時(shí)候,就改變fullname的值。
二、偵聽器的格式
方法格式的偵聽器
- 缺點(diǎn)1:無法在剛進(jìn)入頁面的時(shí)候,自動(dòng)觸發(fā)!
- 缺點(diǎn)2:如果偵聽的是一個(gè)對(duì)象,如果屬性中的屬性發(fā)生了變化,不會(huì)觸發(fā)偵聽器!
對(duì)象格式的偵聽器
- 好處1:可以實(shí)現(xiàn)剛進(jìn)入頁面,自動(dòng)觸發(fā)!
- 好處2:可以實(shí)現(xiàn)深度監(jiān)聽,也就是監(jiān)聽對(duì)象中的屬性是否變化!
三、實(shí)現(xiàn)剛進(jìn)入頁面就觸發(fā)監(jiān)聽和深度監(jiān)聽
剛進(jìn)入頁面就觸發(fā)監(jiān)聽
通過添加immediate選項(xiàng)來實(shí)現(xiàn)
const vm = new Vue({ el: '#app', data: { info: { username: 'admin' } }, watch:{ info:{ handle(newVal){ console.log(newVal) }, // 實(shí)現(xiàn)剛進(jìn)入頁面就觸發(fā)監(jiān)聽 immediate: true } } })
深度監(jiān)聽
在上述代碼中,當(dāng)username發(fā)生變化時(shí)我們是不能監(jiān)聽成功的,因?yàn)樽兓氖菍?duì)象屬性的值,因此需要深度監(jiān)聽,添加deep選項(xiàng)即可
const vm = new Vue({ el: '#app', data: { info: { username: 'admin' } }, watch:{ info:{ handle(newVal){ console.log(newVal) }, // 實(shí)現(xiàn)剛進(jìn)入頁面就觸發(fā)監(jiān)聽 immediate: true, // 實(shí)現(xiàn)深度監(jiān)聽,只要對(duì)象中的任何一個(gè)屬性變化了,都會(huì)觸發(fā)“對(duì)象的偵聽” deep: true } } })
深度監(jiān)聽返回偵聽對(duì)象子屬性的值
上述代碼中執(zhí)行結(jié)果是打印info這個(gè)對(duì)象,我們希望打印的username的值,需要加上newVal.username還是比較麻煩的,我們其實(shí)可以直接監(jiān)聽并打印變化子屬性的值,只需要在要監(jiān)聽的子屬性外面加上一層單引號(hào)即可:
const vm = new Vue({ el: '#app', data: { info: { username: 'admin' } }, watch:{ 'info.username': { handle(newVal){ console.log(newVal) } } } })
最后
⚽本文介紹了Vue中的偵聽器的基本使用以及如何實(shí)現(xiàn)深度監(jiān)聽,希望大家閱讀完有一定的收獲呦~
到此這篇關(guān)于Vue中偵聽器基本用法的文章就介紹到這了,更多相關(guān)Vue偵聽器用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue?vant-ui框架實(shí)現(xiàn)上拉加載下拉刷新功能
功能需求——獲取后端接口返回的數(shù)據(jù),實(shí)現(xiàn)列表數(shù)據(jù)上滑加載更多下一頁數(shù)據(jù),下拉數(shù)據(jù)刷新功能,結(jié)合vant-ui框架實(shí)現(xiàn)??芍苯訁⒖际褂?/div> 2022-09-09vue2.x中h函數(shù)(createElement)與vue3中的h函數(shù)詳解
h函數(shù)本質(zhì)就是createElement(),h函數(shù)其實(shí)是createVNode的語法糖,返回的就是一個(gè)Js普通對(duì)象,下面這篇文章主要給大家介紹了關(guān)于vue2.x中h函數(shù)(createElement)與vue3中h函數(shù)的相關(guān)資料,需要的朋友可以參考下2022-12-12小白教程|一小時(shí)上手最流行的前端框架vue(推薦)
這篇文章主要介紹了前端框架vue,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04vue移動(dòng)端裁剪圖片結(jié)合插件Cropper的使用實(shí)例代碼
本篇文章主要介紹了vue移動(dòng)端裁剪圖片結(jié)合插件Cropper的使用實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07Vue記住滾動(dòng)條和實(shí)現(xiàn)下拉加載的完美方法
這篇文章主要給大家介紹了關(guān)于Vue記住滾動(dòng)條和實(shí)現(xiàn)下拉加載的完美方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07最新評(píng)論