国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

詳解Vue中watch的詳細用法

2024-05-06 16:47:29
字體:
來源:轉載
供稿:網友

在vue中,使用watch來響應數據的變化。watch的用法大致有三種。下面代碼是watch的一種簡單的用法:

''' <input type="text" v-model="cityName"/> new Vue({ el: '#root', data: { cityName: 'shanghai' }, watch: { cityName(newName, oldName) { // ... } } })'''

直接寫一個監聽處理函數,當每次監聽到 cityName 值發生改變時,執行函數。也可以在所監聽的數據后面直接加字符串形式的方法名:

'''watch: { cityName: 'nameChange' } } '''

immediate和handler

這樣使用watch時有一個特點,就是當值第一次綁定的時候,不會執行監聽函數,只有值發生改變才會執行。如果我們需要在最初綁定值的時候也執行函數,則就需要用到immediate屬性。

比如當父組件向子組件動態傳值時,子組件props首次獲取到父組件傳來的默認值時,也需要執行函數,此時就需要將immediate設為true。

'''new Vue({ el: '#root', data: { cityName: '' }, watch: { cityName: {  handler(newName, oldName) {  // ...  },  immediate: true } } }) '''

監聽的數據后面寫成對象形式,包含handler方法和immediate,之前我們寫的函數其實就是在寫這個handler方法;

immediate表示在watch中首次綁定的時候,是否執行handler,值為true則表示在watch中聲明的時候,就立即執行handler方法,值為false,則和一般使用watch一樣,在數據發生變化的時候才執行handler。

deep

當需要監聽一個對象的改變時,普通的watch方法無法監聽到對象內部屬性的改變,只有data中的數據才能夠監聽到變化,此時就需要deep屬性對對象進行深度監聽。

''' <input type="text" v-model="cityName.name"/> new Vue({ el: '#root', data: { cityName: {id: 1, name: 'shanghai'} }, watch: { cityName: { handler(newName, oldName) { // ... }, deep: true, immediate: true } } }) '''

設置deep: true 則可以監聽到cityName.name的變化,此時會給cityName的所有屬性都加上這個監聽器,當對象屬性較多時,每個屬性值的變化都會執行handler。如果只需要監聽對象中的一個屬性值,則可以做以下優化:使用字符串的形式監聽對象屬性:

'''watch: { 'cityName.name': { handler(newName, oldName) { // ... }, deep: true, immediate: true } }'''

總結

以上所述是小編給大家介紹的Vue中watch的詳細用法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上林县| 札达县| 天镇县| 凉山| 玉门市| 和田县| 宾阳县| 明光市| 晋宁县| 高淳县| 丽水市| 咸宁市| 洮南市| 陆丰市| 禹州市| 恩施市| 台南县| 鄱阳县| 大同市| 信阳市| 南充市| 连南| 桦南县| 西乡县| 云霄县| 邵东县| 大渡口区| 阳山县| 成武县| 甘肃省| 遂宁市| 仙游县| 正蓝旗| 兴化市| 浦江县| 松潘县| 堆龙德庆县| 岳池县| 绿春县| 榕江县| 灯塔市|