微信小程序31~40

1.事件綁定和事件對象

小程序中綁定事件沒有on 方式,也沒有click,小程序中可以用bind方法,click事件也需要用tap事件來進行代替。
綁定事件分為兩種:

  1. bind:事件名,eg:
<view bind:tap="fnName"><view/>
  1. bind事件名,eg:
<view bindtap="fnName"><view/>

事件處理函數需要寫到.js文件中,在.js文件中需要調用小程序提供的Page方法來注冊小程序的頁面,可以直接在Page方法中創建事件處理函數。

type的三個屬性可以改變按鈕的樣式:

1. primary 綠色底按鈕
<button type="primary">綁定事件</button>
2. warn紅色按鈕
<button type="warn">綁定事件</button>
3. default綠色字按鈕
<button type="default">綁定事件</button>小按鈕
<button type="primary" size="mini">綁定事件</button>

在小程序中,input輸入框默認沒有邊框,需要自己添加樣式

wxml頁面
<input type="text" bindinput="getInputVal"/>
Page頁面
getInputVal (event) {console.log(event);}
getInputVal (event) {console.log(event.detail.value);

在這里插入圖片描述

2.事件的分類和組織事件冒泡

事件分為冒泡事件和非冒泡事件
冒泡事件:一個組件的事件被觸發后,該事件會向父節點傳遞

<view class="catch" bind:tap="parentHandler"><button bind:tap="btnHandler">按鈕</button>
</view>

非冒泡事件:一個組件的事件被觸發后,該事件不會向父節點傳遞

<view class="catch" bind:tap="parentHandler">
<button catch:tap="btnHandler">按鈕</button>
</view>

使用bind綁定的事件,會觸發事件冒泡,如果想阻止,可以用catch來綁定事件。

3.事件傳參-data-*自定義數據

事件傳參:在觸發事件時,將一些數據作為參數傳遞給事件處理函數的過程就是。
在組件上通過data-*的方式定義需要傳遞的數據,*是自定義的數據

<view data-id="100" bindtap="handler"/>

然后通過事件對象進行獲取自定義數據

<button bind:tap="btnHandler" data-id="1" data-name="tom">按鈕</button>
//currentTarget事件綁定者,即那個組件綁定了當前事件處理函數
//target事件觸發者,即那個組件觸發了當前事件處理函數
//currentTarget和target都是按鈕,因為是按鈕綁定的事件處理函數,同時觸發,用誰獲取數據都行btnHandler (event) {console.log(event.currentTarget.dataset.id);console.log(event.target.dataset.name);},
<view bind:tap="parentHandler" data-ppid="1" data-ppname="tom"><button data-id="1" data-name="tom">按鈕</button>
</view>
//currentTarget事件綁定者:view
//target事件觸發者:button
//想要獲取view的數據用currentTarget,想要獲取button的數據用target
parentHandler (event) {console.log(event);}

在這里插入圖片描述

4.事件傳參-mark自定義數據

mark用于識別具體觸發事件的target節點,還可以承載一些自定義數據。

<view mark:id="100" bindtap="handler"/>
<view bind:tap="parentHandler" mark:ppid="1" mark:ppname="tom"><button mark:id="1" mark:name="tom">按鈕</button>
</view>
//可以獲取到觸發事件的節點和父節點上所有的mark數據
parentHandler (event) {console.log(event);}
5.wxml語法-聲明和綁定數據

小程序頁面中使用的數據要在Page()方法的data對象中聲明定義
數據聲明好后,在WXML使用Mustache語法({{}})將變量包起來,從而將數據綁定
在{{ }}內部可以做一些簡單的運算,如:算數運算、三元運算、邏輯判斷
在{{ }}語法中,只能寫表達式,不能寫語句,也不能調用js相關的方法。

<view>{{ school }} </view>
<view>{{ obj.name }} </view><!-- 綁定屬性值 ,要動態綁定一個變量時,屬性值要用雙大括號包裹-->
<view id="{{id}} ">綁定屬性值</view>
<!-- 如果屬性值是布爾值,也要用雙大括號包裹 -->
<checkbox value="{{ isCheck }}"/>

在這里插入圖片描述

6.setData()修改數據

小程序中修改數據不推薦賦值,賦值無法改變頁面數據
要通過setData()進行修改,setData()方法接收對象作為參數,key是需要修改的數據,value是最新的值。
setData()方法有兩個作用:

  1. 更新數據
  2. 驅動視圖更新
data: {num: 1}, updatenum () {console.log(this.data.num);this.setData({//key:是要更新的數據//value:是最新的值num:this.data.num + 1})}
7.setData()修改對象類型的數據

將key寫成數據路徑的方式a.b.c
‘userInfo.name’: ‘tom’,

<view>{{ userInfo.name }} </view>
<view>{{ userInfo.age }} </view>
<button bind:tap="updateUserInfo">修改對象類型數據</button>updateUserInfo () {// 新增單個或多個屬性//修改同理this.setData({'userInfo.name': 'tom','userInfo.age': '18'})}

優化:用ES6提供的展開運算符或者 Object.assign()

ES6提供的展開運算符const userInfo = {...this.data.userInfo,name: 'jerry',age: 10},this.setData({userInfo})  
Object.assign()方法
const userInfo = Object.assign(this.data.userInfo, {name: 'jerry'}, { age: 18 })this.setData({userInfo})

刪除對象類型的數據

//刪除單個屬性delete this.data.userInfo.age//此時數據已經更新this.setData({//要驅動視圖更新userInfo: this.data.userInfo})//刪除多個屬性
//用rest剩余參數const { age,test, ...rest } = this.data.userInfothis.setData({userInfo: rest})
8.修改數組類型數據

更改list,新增數組元素

第一種方法
updateList () {this.data.list.push(4)this.setData({list: this.data.list})}第二種方法updateList () {const newList = this.data.list.concat(4)this.setData({list: newList})}第三種方法
updateList () {const newList = [...this.data.list, 4]this.setData({list: newList})}

修改數組元素

this.setData({
//將數組的第一個元素中的name改為jerry'list[0].name': 'jerry'})

刪除數組元素

第一種
this.data.list.splice(1,1)this.setData({list: this.data.list})第二種const newList = this.data.list.filter(item => item !== 2)this.setData({list: newList})
9.建議雙向數據綁定

數據能影響頁面,頁面也能影響數據

<input model:value="{{value}}" />

注意事項:
只能是單一字段綁定,不能拼接
不能寫data路徑,也不支持數組和對象

10.列表渲染-基本使用

指通過循環遍歷一個數組或對象,將其中的每個元素渲染到頁面上。
在組件上用wx:for綁定數組或對象,重復渲染當前組件
每一項的變量名默認為item,下表變量名默認為index
要加上wx:key屬性,一兩種形式提供:

  1. 字符串
  2. 保留關鍵字*this
    在這里插入圖片描述
    注意事項:
    如果不加wx:key會報錯
    在給wx:key加屬性值時,不用雙大括號語法,直接用遍歷的array中item的某個屬性
<view wx:for="{{ fruitList }}" wx:key="id">{{ item.name }} </view><view wx:for="{{ fruitList }}" wx:key="index">{{ item.name }} </view><view wx:for="{{ fruitList }}" wx:key="*this">{{ item.name }} </view>

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

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

相關文章

二叉樹題解——二叉樹的直徑【LeetCode】

543. 二叉樹的直徑 一、算法邏輯&#xff08;逐步通順講解每一步思路&#xff09; &#x1f3af; 問題目標&#xff1a; 求二叉樹中任意兩個節點之間的最長路徑&#xff08;以邊數計算&#xff09;。 ? 1?? 初始化變量 ans 用于記錄目前遍歷過程中的最大直徑&#xff08;…

Android開發 Android10及10+讀取外部存儲問題

前提 &#xff1a; 在做文件遍歷時&#xff0c;有的文件在Android10無法訪問&#xff0c;在注冊清單下添加android:requestLegacyExternalStorage"true"后可正常訪問&#xff0c;但一直不知道具體原因。 使用XXPermissions時讀到Android10分區存儲后才明白這里的邏輯…

IP地理定位技術綜述:理論、方法與應用創新(三)

[1]劉學婷,臺文鑫,周帆,等.IP地理定位技術綜述:理論、方法與應用創新[J].通信學報,2025,46(04):33-48. 2 IP地理定位應用場景 基于 IP 地理定位技術的特性和多樣化應用場景,本文將其主要應用分為地理定位服務、網絡安全與優化、網絡空間測繪3類,如圖7所示。基于IP地理定位…

16-C#生成DLL與調用

C#生成DLL與調用 1.2.3.4.5.將DLL文件復制到DEBUG下6.7.8.private void button79_Click(object sender, EventArgs e) {ClassLibrary1.Class1 testnew ClassLibrary1.Class1();UInt16 aConvert.ToUInt16(textBox67.Text);UInt16 b Convert.ToUInt16(textBox68.Text);label90.T…

JSON解析工具哪家強?

一、研究背景與目的 在現代Java應用開發中&#xff0c;JSON數據格式的解析性能直接影響系統響應速度與吞吐量。當處理高并發請求或大規模數據轉換時&#xff0c;解析工具的選擇尤為關鍵。本文通過JMH&#xff08;Java Microbenchmark Harness&#xff09;基準測試框架&#xf…

Go語言動態數據訪問實戰

Go語言反射實戰&#xff1a;動態訪問商品數據中的復雜字段 前言 在電商或倉儲管理系統中&#xff0c;商品信息結構復雜且經常變化。比如商品有基本屬性&#xff08;ID、名稱、類型&#xff09;&#xff0c;還有動態擴展屬性&#xff08;規格、促銷信息、庫存詳情等&#xff0…

[特殊字符] Excel 按月篩選 + 工作表復制 + 樣式批量處理 —— Python 自動化大匯總

本教程展示如何使用 Python 的 openpyxl 實現&#xff1a; 多工作表遍歷&#xff1a;自動查找每月物料表&#xff1b; 條件篩選&#xff1a;獲取 G 列數量大于 1000 的記錄&#xff1b; 生成匯總表&#xff1a;從模板復制頁面并寫入篩選結果&#xff1b; 統一樣式&#xff1…

Text2SQL主流實現方案

目錄 基于 Prompt Engineering 的方案 基于模型微調的方案 T5 模型結構 MIGA 基于RAG 的方案 參考 基于 Prompt Engineering 的方案 這類方案比較簡單粗暴,就是通過精心設計的提示來引導 LLM 生成 SQL,一般包含下面這些做法: 1. 零樣本提示:直接向 LLM 提供數據庫…

有哪些開源的SSO框架?

SSO&#xff08;Single Sign-On&#xff09;是一種身份驗證機制&#xff0c;允許用戶通過一次登錄訪問多個相互信任的系統或應用&#xff0c;無需重復輸入憑證。核心目標是提升用戶體驗和安全性&#xff0c;減少密碼疲勞和管理成本。?一、常見開源SSO框架概覽?開源SSO框架主要…

LoRA 問答微調與部署全流程:基于 LLaMA-Factory + DeepSeek + FastAPI 打造專屬大模型

想快速掌握大模型落地實戰&#xff1f;本文將手把手教你完成一個國產大模型的微調任務&#xff0c;并通過 FastAPI 向后端暴露接口。特別適合希望快速將大模型應用于實際業務的開發者。 &#x1f4cc; 本文為《LoRA 應用實錄》系列第 3 篇&#xff0c;在第一篇里講解了LoRA在 …

分布式部署下如何做接口防抖---使用分布式鎖

防抖也即防重復提交&#xff0c;那么如何確定兩次接口就是重復的呢&#xff1f;首先&#xff0c;我們需要給這兩次接口的調用加一個時間間隔&#xff0c;大于這個時間間隔的一定不是重復提交&#xff1b;其次&#xff0c;兩次請求提交的參數比對&#xff0c;不一定要全部參數&a…

【Java工程師面試全攻略】Day10:系統性能優化全鏈路實踐

一、性能優化的多維視角 系統性能優化是區分普通開發者與高級工程師的關鍵能力指標。根據Google的研究&#xff0c;性能優化帶來的用戶體驗改善可以直接轉化為商業收益——頁面加載時間每減少100ms&#xff0c;亞馬遜的銷售額就增加1%。今天我們將從全鏈路視角剖析性能優化的方…

在kotlin中如何更好的理解 高階函數

在 Kotlin 中&#xff0c;高階函數的本質是「將函數作為商品流通的交易模式」。 核心需求&#xff1a;傳統函數只能操作數據&#xff08;如數字、字符串&#xff09;&#xff0c;但實際開發中常需復用邏輯流程&#xff08;如「先校驗參數&#xff0c;再執行操作」的流程適用于…

15-C#的scottplot控件庫繪制曲線圖

C#的scottplot控件庫繪制曲線圖 1.使用Nuget 安裝scottplot控件庫2.繪制柱狀圖private void button54_Click(object sender, EventArgs e){double[] values { 5, 10, 7, 13, 22, 18, 33, 16 };formsPlot1.Plot.Add.Bars(values);formsPlot1.Refresh();}3.中文標題顯示問題 for…

使用jiaminghi/data-view-react, 本地調試能顯示,發布就不顯示|不成功(版本沖突)

你遇到的問題是&#xff1a; 使用 jiaminghi/data-view-react&#xff08;也就是 DataV 可視化組件庫&#xff09;&#xff0c;本地調試沒問題&#xff0c;但發布后打包上線卻不顯示圖表/組件。 ? 常見原因&#xff08;很大概率命中&#xff09; 1. CSS 或字體資源路徑丟失 …

網絡層:ip協議 與數據鏈路層

目錄 網絡層 引子與前置知識 一、協議格式 二、網段劃分(重要) 三、特殊的IP地址 四、IP地址的數量限制 五、私有IP地址和公網IP地址 六、理解運營商和全球網絡 七、路由 八、協議格式補充 數據鏈路層 一、以太網幀格式 二、局域網的通信原理 三、認識MTU 四、…

Nginx入門進階:從零到高手的實戰指南

Nginx 入門與進階玩法指南 一、什么是 Nginx&#xff1f; Nginx&#xff08;Engine X&#xff09;是一個高性能的 HTTP 和反向代理服務器&#xff0c;同時也可以作為 IMAP/POP3/SMTP 郵件代理服務器。它最初由俄羅斯程序員 Igor Sysoev 開發&#xff0c;用于解決高并發下 Apa…

NPM組件 alan-baileys 等竊取主機敏感信息

【高危】NPM組件 alan-baileys 等竊取主機敏感信息 漏洞描述 當用戶安裝受影響版本的 alan-baileys 組件包時會竊取用戶的主機名、用戶名、工作目錄、IP地址等信息并發送到攻擊者可控的服務器地址。 MPS編號MPS-wkyd-5v7r處置建議強烈建議修復發現時間2025-07-02投毒倉庫npm…

Python爬蟲實戰:研究httplib2庫相關技術

1. 引言 1.1 研究背景與意義 隨著互聯網的快速發展,網絡上的信息量呈爆炸式增長。如何從海量的網頁中高效地獲取有價值的數據,成為了當前信息技術領域的一個重要研究課題。網絡爬蟲作為一種自動獲取互聯網信息的程序,能夠按照一定的規則,自動地抓取網頁內容并提取和整理信…

【C++】簡單學——模板初階

模板&#xff08;template&#xff09; 泛型編程&#xff0c;讓編譯器把我們不想干的事情給干了 類似于typedef&#xff0c;解決了typedef使用不方便地原因&#xff08;雖然看似寫少了&#xff0c;其實只是編譯器做多了&#xff09; 例如&#xff1a; 生成兩個棧&#xff0c;…