Vue.js第二節

計算屬性、事件綁定、條件判斷、遍歷循環

計算屬性:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./vue.js"></script>
</head>
<body><div id="app"><h3>用戶信息</h3><div >姓名:{{userInfo.name}}</div><div >性別:{{userInfo.sex}}</div><div >性別:{{getSexLable}}</div><!-- 這個表示函數的調用 [Vue warn]: Error in render: "TypeError: getSexLable2 is not a function"報錯 其實這個 getSexLable 在Vue內部像是一個方法,但不是一個方法func--><!-- <div >性別:{{getSexLable2(userInfo.sex)}}</div> --><!--重點分析:第一步getSexLable3這個前面部分會先去調用計算屬性,這個時候會返回一個我們聲明的匿名函數體,那么我就可以直接拿來調用,因為我返回的是function所以我才能夠通過()括號調用函數的形式傳參等執行--><div >性別:{{getSexLable3(userInfo.sex)}}</div></div></body><script>// 后端數據庫一般存 0 1 代表男 女  Vue有專門的東西可以計算屬性將數據做一個轉換var s=new Vue({el:"#app",// 數據存放區data(){return{// 現在有兩份數據 用戶的基本信息userInfo:{name:"隔壁",sex:'0'},// 性別字典值 業務層面上這種值不會變,我如果要的話我找它拿就行了sexDict:[{code:'1',label:'男'},{code:'0',label:'女'}],name:'xxx'}},// 計算屬性computed:{// 這是一個函數的形式 es6的增強語法。然后我們可以把這個方法名當做是變量名去使用getSexLable(){// 簡單使用 // 在這里我只知道一份信息,在Vue實例中 除了data外 ,訪問別的區域的時候,需要帶上this// 但是這種Switch方法只能適應很小很小的場景 擴展能力差,并不是那么好用  但也是一種方式switch(this.userInfo.sex){case '1':return '男';break;case '0':return '女';break;}return '未知';},//該方法我希望它能夠傳值 ,所以該方法不可取getSexLable2(sexCode){console.log('the people`s sex is'+sexCode);},// 因為上面我這個方法行不通那么就 return一個function(){} 然后就好比在調用一個函數// 必須要有返回值getSexLable3(){return function (sexCode) {// 然后我們只根據這個code進行判斷 無需再this.通過區域去拿值。我無需再關心我內部實現的邏輯怎么樣,我只需要調用傳值// 開發層級上經常用switch (sexCode) {case '1':return '男';break;case '0':return '女';break;} }}// 記住不僅該計算屬性有這樣的方法 而且它還有緩存的效果,每次監聽到傳入值變化的時候,會去對比前一次return的值,// 如果說相同就不會再去更新頁面上的內容,可以達到減少開銷的效果// 但是如果return 的是function可能會去重新計算 問題不大 開銷一點點罷了}})
</script>
</html>

事件綁定:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./vue.js"></script>
</head>
<body><div id="app"><!-- 我們vue中要綁定事件的話 就跟前面一節課一樣 聲明一個指令就行了 記住函數要在js里面聲明.記住不傳參可以不用寫參數 --><button v-on:click="handler">按鈕</button><!-- 以后都用下面這種寫法 然后click等號右邊可以是邏輯代碼 --><button @click="num++">{{num}}</button><!-- 可以傳參 $event:如果我們要用event建議通過參數的形式傳遞然后直接打印。是關鍵字。正常不會失效,也沒有什么情景去拿事件對象--><button @click="handler(1,2,3,$event)">按鈕</button><!-- -------------------------------------------------- --><!-- 條件判斷  補充我們雖然學過屬性綁定 但是我們不一定都通過事件的綁定去拿值,只是說有些變量需要通過綁定才拿到值采取,就是說這個值是變化的才去綁定比如father我就是固定好的屬性值所以無需再去綁定 什么的,有點多此一舉的行為--><!-- 以前我們父子級別中同樣的事件行為 當孩子點擊的時候 父親也會觸發  --><div class="father" style="border: 1px solid black; " @click="log">父親<!-- 直接點stop就行了 --><div class="child" style="border: 1px solid black;" @click.stop="log">孩子</div></div></div>
</body>
<script>var s =new Vue({el:"#app",data(){return{num:0}},//  聲明一個Methodsmethods:{handler(...rest){console.log(event);console.log(event.target);// vue的事件里面 this 不指向事件源 永遠指向Vue實例對象// 如果非要獲取事件源DOM可以通過事件的target屬性console.log(this.num);console.log('jsikdsds');// 參數 console.log(rest);},log(){console.log('dont touch me again OK??????' );}}})
</script>
</html>

條件判斷:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./vue.js"></script>
</head>
<body><div id="app"><!-- 我可以通過條件去判斷該標簽的顯示和隱藏 讓用戶看起來還是一樣的效果 --><div class="sex"><!-- 這個意思是如果sex等于1我就返回男 否則就返回女 if-else這個系列是在做節點操作 刪除創建 --><!--v-if 右邊只要有值就行 會自動轉為 bool類型 比較方便  --><span class="man a1" v-if="userInfo.sex==2" @click="handler">男</span><!-- 記住else之一塊 不是說不會顯示 而是不會被創建 --><span class="woman a2" v-else @click="handler">女</span><!-- 優化先取個類名 --></br><!-- 我們有些標簽是經常需要顯示和隱藏的 如果頻繁的進行節點刪除和創建 對瀏覽器的開銷是挺大的 --><!-- 所以有個指令是v-show  是通過css的display:none來控制的--><span class="man a3" v-show="userInfo.sex==1" @click="handler">男</span><!-- 記住else之一塊 不是說不會顯示 而是不會被創建 --><span class="woman a4" v-show="userInfo.sex==0" @click="handler">女</span><!-- 頁面頻繁切換顯示隱藏 推薦使用v-show 如果是一些權限控制系統推薦使用v-if --><!-- 剛剛在控制臺通過document.querySelector()發現 a1能被選到 但是 a2為空;a3,a4都能被選到(這樣是很危險的)只要節點存在就可以通過控制臺或者外掛一個腳本 。所以權限控制的推薦使用v-if--></div></div></body>
<script>var s=new Vue({el:"#app",data(){return{userInfo:{sex:'1'}}},methods:{handler(){console.log('xxxxxxxxxxxxxxxxxxxxxxxxxx');}}})
</script>
</html>

條件遍歷:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./vue.js"></script>
</head>
<body><!-- Vue是跟著數據走的記住// 我們可以遍歷循環出數據來  --><div id="app"><h1>遍歷數組(常用)</h1><!-- v-for 的語法比較特殊 item:表示當前的遍歷項   具有局部作用域。因為我這里產生了遍歷項 text找不到它的遍歷項然后就去找data里面--><div class="card" v-for="item in cardList">{{item}}{{text}}</div><!-- 遍歷數組對象  Vue能夠把對象轉成文本顯示 我如果要用值直接. 一般都是通過該方式--><div class="pop" v-for="item in peopList">{{item.name}}</div><!-- 默認第二項是獲取下標 可以省略掉-->·<div class="pop" v-for="(item,index) in peopList">{{item.name}}{{index}}</div><!-- 遍歷字符串 --><div class="str" v-for="charone in text">{{charone}}</div><!-- 遍歷數字 --><div class="number" v-for="(n,index) in 5">{{n}}</div><div>------------------------------------</div><!-- 遍歷對象  記住 遍歷的是每一個鍵的值 正常開發這個也常用牢記 遍歷對象這個是鍵值對不是下標--><div class="obj" v-for="(ob,index) in bro">{{ob}}{{index}}</div><!-- 當使用`v-for`指令時,需要在該標簽上寫上`key`屬性,并且理想的 key 值是每項唯一,以便vue實例能跟蹤每個節點的身份,從而重用和重新排序現有元素。通常會使用屬性綁定,對其賦值;不建議使用`index`值 --><!-- 遍歷對象  記住 遍歷的是每一個鍵的值 正常開發這個也常用牢記 遍歷對象這個是鍵值對不是下標每一個v-for 寫一個key 不能被定死 盡量不要用index 這樣會導致代碼執行完會有很多key都是相同的所以寫v-for記得帶上key 有些節點 因為v-for是遍歷那些數組 串聯出來的節點 下一次數組如果更新,vue會檢測到數據變化會重新遍歷一次 有些節點數據沒變 你給了key Vue抓到之后 可以減少一些沒有必要的重復遍歷 提高性能 減少一些奇怪的bug 估計不會出現--><div>------------------------------</div><div class="obj" v-for="(ob,index) in bro" :key="ob+index">{{ob}}{{index}}</div></div></body><script>const s=new Vue({el:"#app",data(){return{cardList:[1,2,3,4,44],peopList:[{name:'zs',age:'12'},{name:'ls',age:'12'}],text:'hello world',bro: {name:"xiaomi",price:'1222'}}}})//   數組檢測更新 Vue會捕捉到數據的變化 然后重新遍歷數組 新增一項 Vue重寫了push 自動更新頁面上的內容 必須用Vue的setTimeout(() => {// s.peopList.push({name:"kk",age:'13'})// 通過這樣的方式改變值 Vue是不會更新的視圖上 無法被Vue捕捉并更新到視圖上s.cardList[0]=9// 提供了全局的一個方法 第一個填我要更新的數據目標 第二個填下標 第三個填我要更新的值  三秒鐘自己變了 ¥set一定能夠保證數據的變化和視圖的變化s.$set(s.cardList,0,10000)}, 3000);
</script>
</html>

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

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

相關文章

從開源代碼入場無人機學術研究到商業化市場的全路徑指南-優雅草卓伊凡

從開源代碼入場無人機學術研究到商業化市場的全路徑指南-優雅草卓伊凡 引言&#xff1a;開源代碼在無人機研究中的重要性 優雅草卓伊凡在這里告訴大家&#xff0c;如果真的要開始進入無人機領域&#xff0c;我們需要一步步開始研究。目前先去看看開源無人機代碼是尤為重要的&…

window11中開啟ubuntu22.04子系統

一、啟用Windows子系統 打開控制面板 選擇程序然后點擊“啟用或關閉Windows功能” 勾選如下2項&#xff0c;點擊確定 二、安裝內核升級包 打開鏈接https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi下載內核升級包&#xff0c;打開后安裝、重啟電腦…

80Qt窗口_對話框

目錄 5. 對話框 5.1 對話框介紹 用例1&#xff1a; 用例2&#xff1a; 用例3&#xff1a; 用例4&#xff1a; 5.2 對話框的分類 5.2.1 模態對話框 5.2.2 ?模態對話框 5. 對話框 5.1 對話框介紹 對話框是 GUI 程序中不可或缺的組成部分。?些不適合在主窗?實現的功…

Pyenv 跟 Conda 還有 Poetry 有什么區別?各有什么不同?

pyenv、Conda 和 Poetry 是 Python 生態中常用的工具&#xff0c;但它們的核心功能和用途不同&#xff0c;通常可以結合使用。以下是它們的區別和特點&#xff1a; 1. pyenv 用途&#xff1a;管理多個 Python 解釋器版本。 核心功能&#xff1a; 安裝不同版本的 Python&#x…

數學符號和標識中英文列表(含義與示例)

數學符號和標識的參考&#xff0c;涵蓋了數學的各個主要分支&#xff0c;并提供清晰的定義和示例&#xff0c;方便快速查找和學習收藏。 目錄 基礎數學符號幾何符號代數符號線性代數符號概率與統計符號集合論符號邏輯符號微積分與分析符號數字與字母符號 特點 中英對照&…

「Java流程控制」switch結構

知識點解析 1.switch結構的核心概念 switch語句是一種多分支選擇結構,它根據表達式的值來選擇執行不同的代碼塊。與if-else結構相比,switch更適合處理離散的、有限個值的比較。 2.switch結構的基本語法 switch (表達式) {case 值1:// 代碼塊1[break;]case 值2:// 代碼塊…

從0開始學習R語言--Day27--空間自相關

有的時候&#xff0c;我們在數據進行分組時&#xff0c;會發現用正常的聚類分析的方法和思維&#xff0c;分組的情況不是很理想。其實這是因為我們常常會忽略一個問題&#xff1a;假設我們正在分析的數據是真實的&#xff0c;那么它也肯定在一定程度上符合客觀規律。而如果我們…

Excel將表格文件由寬數據轉為長數據的方法

本文介紹基于Excel軟件的Power Query模塊&#xff0c;實現表格數據由寬數據轉為長數據的具體方法。 長數據和寬數據是數據分析中的2種基本數據組織形式&#xff0c;二者在結構、用途、適用場景等方面各有特點。其中&#xff0c;寬數據 &#xff08;Wide Format&#xff09;以“…

SpringAI + DeepSeek大模型應用開發 - 入門篇

三、SpringAI Spring AILangChain4jChat支持支持Function支持支持RAG支持支持對話模型1515向量模型1015向量數據庫1520多模態模型51JDK178 1. 對話機器人 1.1 快速入門 步驟①&#xff1a;引入依賴&#xff08;先去掉openai的starter依賴&#xff0c;因為要配置API_KEY&#…

ROS docker使用顯卡驅動rviz gazebo,以及接入外設和雷達

ROS docker使用顯卡驅動rviz gazebo&#xff0c;以及接入外設和雷達 由于我的電腦裝ubuntu22.04系統&#xff0c;想使用ros noetic開發&#xff0c;使用魚香ros一鍵安裝docker安裝。但是啟動dockek中rviz無法使用顯卡驅動&#xff0c;usb相機端口不顯示&#xff0c;網口雷達無…

ruoyi后端框架的mapper層復雜字段數據獲取問題

背景。如下是復雜字段。需要在mapper.java類注解中聲明autoResultMap true才會進行處理。前提是&#xff0c;創建后端程序代碼沒有添加mapp.xml文件。故用注解簡化代替。

產品推薦|一款具有單光子級探測能力的科學相機千眼狼Gloria 1605

在生命科學超分辨率成像、量子物理單光子探測、交叉領域單分子追蹤等應用場景中&#xff0c;具有單光子級探測能力的科學相機是科學實驗的關鍵設備。 千眼狼Gloria 1605采用16μm16μm大像元尺寸設計&#xff0c;基于Gpixel科學級背照式CMOS芯片&#xff0c;集成千眼狼底層圖像…

JS.Day2-堆選(Py)/三路快排-快速選擇-215,11,560,21,128,20,121

目錄 215.找第k大元素 三路的快速排序 快速選擇 法2.堆選 &#xff08;堆排序&#xff09; 11.盛更多水的容器 代碼1 代碼2 560.和為K的子數組&#xff08;題意&#xff01;&#xff09; 慣性思維 正解 21.合并生序鏈表 遞歸寫法 128.最長連續序列 20.有效的括號…

第8章 處理幾何圖形 面向 ArcGIS的Python腳本編程

一、折點坐標(.txt 或 .xlsx 或 .xls) > 點線面圖層(.shp) &#xff08;一&#xff09;.xlsx 或 .xls > .shp 新建一個文件夾&#xff0c;連接到該文件夾&#xff0c;并將其設置為工作空間 在該文件夾下&#xff0c;新建一個pts.xlsx的文件&#xff0c;并輸入下圖內容 …

使用(h3.js)繪制六角網格碼

今天來記錄一篇關于h3.js插件庫的使用&#xff0c;他可以很高效的計算出地球上某個經緯度坐標六邊形頂點。 前段時間領導突然給我個售前功能&#xff0c;要求是使用h3.js插件在地球上繪制出六邊形網格碼&#xff0c;本來以為挺棘手的&#xff0c;結果看完文檔后發現也挺簡單的…

GO 1.25

Go 1.25 發布說明&#xff08;草案&#xff09; Go 1.25 尚未發布。 本文檔是正在編寫中的發布說明。Go 1.25 預計于 2025 年 8 月發布。 語言變更 Go 1.25 中沒有影響 Go 程序的語法變更。然而&#xff0c;在語言規范中&#xff0c;“核心類型”&#xff08;core types&…

解析Android SETUP_DATA_CALL 鏈路信息字段

Android 對象返回的log信息經常都不是標準的JSON字符串,排查字段不直觀,比如下面的日志: 06-13 15:56:36.204 8076 8407 D RILJ : [1655]> SETUP_DATA_CALL,reason=NORMAL,accessNetworkType=EUTRAN,dataProfile=[DataProfile=[ApnSetting] IMS, 2318, 310260, ims,…

跨語言RPC:使用Java客戶端調用Go服務端的HTTP-RPC服務

在構建分布式系統時&#xff0c;實現不同編程語言之間的無縫通信是一個常見的需求。本文將詳細介紹如何使用Go語言創建一個HTTP-RPC服務&#xff0c;并通過Java客戶端進行遠程調用。我們將探索整個過程&#xff0c;包括服務端的實現、客戶端的編寫以及測試驗證。 一、背景介紹…

CVPR2024遷移學習《Unified Language-driven Zero-shot Domain Adaptation》

摘要 本文提出了一個名為 Unified Language-driven Zero-shot Domain Adaptation&#xff08;ULDA&#xff09;的新任務設置&#xff0c;旨在使單一模型能夠適應多種目標領域&#xff0c;而無需明確的領域標識&#xff08;domain-ID&#xff09;知識。現有語言驅動的零樣本領域…

AI安全風險監測平臺:全周期防護體系構建

AI安全風險監測平臺通過構建全生命周期防護體系&#xff0c;實現對人工智能系統研發、部署、運行、迭代各階段的安全風險動態監測。該平臺融合算法審計、行為分析、合規驗證等核心能力&#xff0c;建立覆蓋模型安全、數據安全、應用安全的立體防御網絡&#xff0c;為智能系統提…