Vue-監聽屬性

監聽屬性

簡單監聽

點擊切換名字,來回變更Tom/Jerry,輸出 你好,Tom/Jerry

在這里插入圖片描述

  • 代碼
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>監聽屬性</title><!--  引入Vue  --><script type="text/javascript" src="../js/vue.js"></script></head><body><div id="root"><h1>監聽屬性</h1><div><h2>你好,{{name}}</h2><button @click="changeName">切換名字</button></div></div></body><script type="text/javascript">Vue.config.productionTip = false; // 阻止vue在啟動是生成生產提示const vm = new Vue({el: "#root",data: {isTom: true},computed: {name(){return this.isTom ? "Tom" : "Jerry"}},methods: {changeName(){this.isTom = !this.isTom}},watch: {// isTom:{//   immediate:true, //初始化就執行handler方法//   // isTom發生改變時執行//   handler(newValue,oldValue){//     console.log("isTom切換了", oldValue + "->" + newValue)//   }// },name:{immediate:true, //初始化就執行handler方法// isTom發生改變時執行handler(newValue,oldValue){console.log("名字切換了", oldValue + "->" + newValue)}}},});vm.$watch('isTom',{immediate:true, //初始化就執行handler方法// isTom發生改變時執行handler(newValue,oldValue){console.log("isTom切換了", oldValue + "->" + newValue)}})</script>
</html>
  • 效果

在這里插入圖片描述

深度監聽

監聽對象發生變更 numbers:{x:1,y:1}

對象某個屬性監聽 (x)

  • 代碼
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>監聽屬性</title><!--  引入Vue  --><script type="text/javascript" src="../js/vue.js"></script></head><body><div id="root"><h1>監聽屬性</h1><div><h2>你好,{{name}}</h2><button @click="changeName">切換名字</button><h2>單屬性監聽</h2><button @click="numbers.x++">監聽x+1</button></div></div></body><script type="text/javascript">Vue.config.productionTip = false; // 阻止vue在啟動是生成生產提示const vm = new Vue({el: "#root",data: {isTom: true,numbers:{x:1,y:2}},computed: {name(){return this.isTom ? "Tom" : "Jerry"}},methods: {changeName(){this.isTom = !this.isTom}},watch: {// isTom:{//   immediate:true, //初始化就執行handler方法//   // isTom發生改變時執行//   handler(newValue,oldValue){//     console.log("isTom切換了", oldValue + "->" + newValue)//   }// },name:{immediate:true, //初始化就執行handler方法// isTom發生改變時執行handler(newValue,oldValue){console.log("名字切換了", oldValue + "->" + newValue)}},'numbers.x':{immediate:true, //初始化就執行handler方法// isTom發生改變時執行handler(newValue,oldValue){console.log("x變更了", oldValue + "->" + newValue)}},numbers:{immediate:true, //初始化就執行handler方法// isTom發生改變時執行handler(newValue,oldValue){console.log("numbers變更了", oldValue + "->" + newValue)}}},});vm.$watch('isTom',{immediate:true, //初始化就執行handler方法// isTom發生改變時執行handler(newValue,oldValue){console.log("isTom切換了", oldValue + "->" + newValue)}})</script>
</html>
  • 效果

在這里插入圖片描述

發現變更x, 并沒有監聽到numbers變更

屬性變更能監聽到整個對象的變化

深度監聽 deep:true 可以監聽對象內部的值改變(支持多層級)

  • 代碼
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>監聽屬性</title><!--  引入Vue  --><script type="text/javascript" src="../js/vue.js"></script></head><body><div id="root"><h1>監聽屬性</h1><div><h2>你好,{{name}}</h2><button @click="changeName">切換名字</button><h2>單屬性監聽</h2><button @click="numbers.x++">監聽x+1</button></div></div></body><script type="text/javascript">Vue.config.productionTip = false; // 阻止vue在啟動是生成生產提示const vm = new Vue({el: "#root",data: {isTom: true,numbers:{x:1,y:2}},computed: {name(){return this.isTom ? "Tom" : "Jerry"}},methods: {changeName(){this.isTom = !this.isTom}},watch: {// isTom:{//   immediate:true, //初始化就執行handler方法//   // isTom發生改變時執行//   handler(newValue,oldValue){//     console.log("isTom切換了", oldValue + "->" + newValue)//   }// },name:{immediate:true, //初始化就執行handler方法// isTom發生改變時執行handler(newValue,oldValue){console.log("名字切換了", oldValue + "->" + newValue)}},'numbers.x':{immediate:true, //初始化就執行handler方法// isTom發生改變時執行handler(newValue,oldValue){console.log("x變更了", oldValue + "->" + newValue)}},numbers:{immediate:true, //初始化就執行handler方法,deep:true,// 可以監聽對象內部的值改變(支持多層級)// isTom發生改變時執行handler(newValue,oldValue){console.log("numbers變更了", JSON.stringify(oldValue) + "->" +  JSON.stringify(newValue))}}},});vm.$watch('isTom',{immediate:true, //初始化就執行handler方法// isTom發生改變時執行handler(newValue,oldValue){console.log("isTom切換了", oldValue + "->" + newValue)}})</script>
</html>
  • 效果

在這里插入圖片描述

簡寫

前提條件:不需要特殊配置(deep、immediate)方可簡寫

  • 代碼
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>監聽屬性</title><!--  引入Vue  --><script type="text/javascript" src="../js/vue.js"></script></head><body><div id="root"><h1>監聽屬性</h1><div><h2>你好,{{name}}</h2><button @click="changeName">切換名字</button></div></div></body><script type="text/javascript">Vue.config.productionTip = false; // 阻止vue在啟動是生成生產提示const vm = new Vue({el: "#root",data: {isTom: true,},computed: {name() {return this.isTom ? "Tom" : "Jerry";},},methods: {changeName() {this.isTom = !this.isTom;},},watch: {// 常規操作// name:{//   immediate:true, //初始化就執行handler方法//   // isTom發生改變時執行//   handler(newValue,oldValue){//     console.log("名字切換了", oldValue + "->" + newValue)//   }// },// 簡寫name(newValue, oldValue) {console.log("名字切換了", oldValue + "->" + newValue);},},});// 正常寫法// vm.$watch('isTom',{//   immediate:true, //初始化就執行handler方法//   // isTom發生改變時執行//   handler(newValue,oldValue){//     console.log("isTom切換了", oldValue + "->" + newValue)//   }// })// 簡寫vm.$watch("isTom", function (newValue, oldValue) {console.log("isTom切換了", oldValue + "->" + newValue);});</script>
</html>
  • 效果

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/80482.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/80482.shtml
英文地址,請注明出處:http://en.pswp.cn/web/80482.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DeepSeek 賦能物聯網:從連接到智能的跨越之路

目錄 一、引言&#xff1a;物聯網新時代的開啟二、DeepSeek 技術揭秘2.1 DeepSeek 是什么2.2 DeepSeek 技術優勢 三、DeepSeek 與物聯網的融合之基3.1 物聯網發展現狀與挑戰3.2 DeepSeek 帶來的變革性突破 四、DeepSeek 在物聯網的多元應用場景4.1 智慧電力&#xff1a;開啟能源…

3.6/Q1,GBD數據庫最新文章解讀

文章題目&#xff1a;Global, regional, and national burden of geriatric depressive disorders in people aged 60 years and older: an analysis of the Global Burden of Disease Study 2021 DOI&#xff1a;10.1186/s12991-025-00560-2 中文標題&#xff1a;60 歲及以上人…

LVGL學習筆記

文章目錄 一、 LVGL移植教程(GD32)一 并行驅動 LED二三一、 LVGL移植教程(GD32) 參考鏈接 1.GD32+LVGL移植教程(超詳細)——基于GD32F303X系列MCU 一 并行驅動 LED 根據您提供的引腳信號(DCLK、DISP、HSYNC、VSYNC、DE),可以判斷這是一款采用 TTL/Parallel RGB 接口…

軟件架構之--論微服務的開發方法1

論微服務的開發方法1 摘要 2023年 2月,本人所在集團公司承接了長三角地區某省漁船圖紙電子化審查系統項目開發,該項目旨在為長三角地區漁船建造設計院、以及漁船圖紙審查機構提供一個便捷的漁船圖紙電子化審查服務平臺。在此項目中,我作為項目組成員參與項目的建設工作,并…

如何在終端/命令行中把PDF的每一頁轉換成圖片(PNG)

今天被對象安排了一個任務&#xff1a; 之前自己其實也有這個需要&#xff0c;但是吧&#xff0c;我懶&#xff1a;量少拖拽&#xff0c;量大就放棄。但這次躲不過去了&#xff0c;所以研究了一下有什么工具可以做到這個需求。 本文記錄我這次發現的使用 XpdfReader 的方法。…

mac安裝cast

背景 pycharm本地運行腳本時提示cast沒有安裝 問題原因 腳本嘗試調用cast命令&#xff08;以太坊開發工具foundry中的子命令&#xff09;&#xff0c;但您的系統未安裝該工具。 從日志可見&#xff0c;錯誤發生在通過sysutil.py執行shell命令時。 解決方案 方法1&#xf…

【搭建Node-RED + MQTT Broker實現AI大模型交互】

搭建Node-RED MQTT Broker實現AI大模型交互 搭建Node-RED MQTT Broker實現AI大模型交互一、系統架構二、環境準備與安裝1. 安裝Node.js2. 安裝Mosquitto MQTT Broker3. 配置Mosquitto4. 安裝Node-RED5. 配置Node-RED監聽所有網絡接口6. 啟動Node-RED 三、Node-RED流程配置1. …

算法第21天 | 第77題. 組合、216. 組合總和 III、17. 電話號碼的字母組合

回溯基礎概念 什么是回溯&#xff1f; 如何實現回溯&#xff1f; 第77題. 組合 題目 思路與解法 carl的講解&#xff1a; 回溯搜索法 class Solution:def combine(self, n: int, k: int) -> List[List[int]]:self.path []self.res []self.backtracking(n, k, 1)retu…

嵌入式硬件篇---拓展板

文章目錄 前言 前言 本文簡單介紹了拓展板的原理以及使用。

【深度學習基礎】從感知機到多層神經網絡:模型原理、結構與計算過程全解析

【深度學習基礎】從感知機到多層神經網絡&#xff1a;模型原理、結構與計算過程全解析 1. 引言 神經網絡的重要性&#xff1a; 作為人工智能的核心技術之一&#xff0c;神經網絡通過模擬人腦神經元的工作機制&#xff0c;成為解決復雜模式識別、預測和決策任務的利器。從圖像分…

sparkSQL讀入csv文件寫入mysql(2)

&#xff08;二&#xff09;創建數據庫和表 接下來&#xff0c;我們去創建一個新的數據庫&#xff0c;數據表&#xff0c;并插入一條數據。 -- 創建數據庫 CREATE DATABASE spark; -- 使用數據庫 USE spark;-- 創建表 create table person(id int, name char(20), age int);-- …

JVM如何處理多線程內存搶占問題

目錄 1、堆內存結構 2、運行時數據 3、內存分配機制 3.1、堆內存結構 3.2、內存分配方式 1、指針碰撞 2、空閑列表 4、jvm內存搶占方案 4.1、TLAB 4.2、CAS 4.3、鎖優化 4.4、逃逸分析與棧上分配 5、問題 5.1、內存分配競爭導致性能下降 5.2、偽共享&#xff08…

Ubuntu---omg又出bug了

自用遇到問題的合集 250518——桌面文件突然消失 ANS&#xff1a;參考博文

正則表達式與文本處理的藝術

引言 在前端開發領域&#xff0c;文本處理是一項核心技能。正則表達式作為一種強大的模式匹配工具&#xff0c;能夠幫助我們高效地處理各種復雜的文本操作任務。 正則表達式基礎 什么是正則表達式&#xff1f; 正則表達式是一種用于匹配字符串中字符組合的模式。它由一系列…

初學c語言15(字符和字符串函數)

一.字符串分類函數 頭文件&#xff1a;ctype.h 作用&#xff1a;判斷是什么類型的字符 函數舉例&#xff1a; 函數 符合條件就為真 islower判斷是否為小寫字符&#xff08;a~z&#xff09;isupper判斷是否為大寫字符&#xff08;A~Z&#xff09;isdigit十進制數字&#xf…

12-串口外設

一、串口外設的基本概述 1、基本定義 串口通信&#xff0c;通過在通信雙方之間以比特位&#xff08;bit&#xff09;的形式逐一發送或接收數據&#xff0c;實現了信息的有效傳遞。其通信方式不僅簡單可靠&#xff0c;而且成本很低。 2、stm32的串口 下面是兩個MCU的數據交互&…

NE555雙音門鈴實驗

1腳為地。通常被連接到電路共同接地。 2腳為觸發輸入端。 3腳為輸出端&#xff0c;輸出的電平狀態受觸發器的控制&#xff0c;而觸發器受上比較器6腳和下比較器2腳的控制。當觸發器接受上比較器A1從R腳輸入的高電平時&#xff0c;觸發器被置于復位狀態&#xff0c;3腳輸出低電…

Redis分布式鎖實現

概述 為什么要要分布式鎖 在并發編程中&#xff0c;我們通過鎖&#xff0c;來避免由于競爭而造成的數據不一致問題。 通常&#xff0c;我們以synchronized 、Lock來使用它。Java中的鎖&#xff0c;只能保證在同一個JVM進程內中執行 如果需要在分布式集群環境下的話&#xff0…

軟件設計師-錯題筆記-網絡基礎知識

1. 解析&#xff1a; 1.子網劃分相關知識&#xff1a; 在IPv4地址中&#xff0c;/27表示子網掩碼為255.255.255.224&#xff0c;它將一個C類網絡&#xff08;默認子網掩碼255.255.255.0&#xff09;進一步劃分 對于子網掩碼255.255.255.224&#xff0c;其對應的二進制為111…

Fine-Tuning Llama2 with LoRA

Fine-Tuning Llama2 with LoRA 1. What is LoRA?2. How does LoRA work?3. Applying LoRA to Llama2 models4. LoRA finetuning recipe in torchtune5. Trading off memory and model performance with LoRAModel ArgumentsReferences https://docs.pytorch.org/torchtune/ma…