一文帶你了解微信小程序數(shù)據(jù)綁定、事件綁定以及事件傳參、數(shù)據(jù)同步
數(shù)據(jù)綁定
基本原則
- 在data中定義數(shù)據(jù)
- 在WXML中使用數(shù)據(jù)
在data中定義數(shù)據(jù)
在頁面對應(yīng)的.js 文件中,把數(shù)據(jù)定義到data對象中即可。
Mustache語法
把data中的數(shù)據(jù)綁定到頁面中渲染,使用 Mustache語法(雙大括號(hào)) 將變量包起來即可。
語法:
<view>{{定義的數(shù)據(jù)名稱}}</view>
Mustache語法的應(yīng)用
綁定內(nèi)容
綁定內(nèi)容即為文本的綁定,就如上述例子中將一個(gè)字符串綁定到view的文本節(jié)點(diǎn)中。
綁定屬性
綁定屬性即將一個(gè)數(shù)據(jù)綁定在一個(gè)標(biāo)簽的屬性節(jié)點(diǎn)中。
如:在頁面js文件的data中添加一個(gè)src數(shù)據(jù)。
在頁面wxml文件中使用Mustache語法將其綁定在image
標(biāo)簽的屬性節(jié)點(diǎn)中。
運(yùn)算(三元運(yùn)算、算術(shù)運(yùn)算等)
在小程序的編譯中也可以進(jìn)行運(yùn)算操作。
三元運(yùn)算
如:
在頁面js文件中添加data數(shù)據(jù)。
在頁面.wxml中綁定該數(shù)據(jù),并進(jìn)行判斷.
算數(shù)運(yùn)算
如:
在頁面js文件中的data中添加數(shù)據(jù)。
在頁面wxml中進(jìn)行數(shù)據(jù)綁定,并進(jìn)行計(jì)算。
事件綁定
什么是事件?
事件是渲染層到邏輯層的通訊方式。通過事件可以將用戶在渲染層產(chǎn)生的行為,反饋到邏輯層進(jìn)行業(yè)務(wù)的處理。與html類似,相當(dāng)于用戶與小程序的交互。
常用事件
事件 | 用法 | 說明 |
---|---|---|
tap | bindtap /bind:tap | 手指觸摸后馬上離開,相當(dāng)于html中的click事件 |
input | bindinput /bind:input | 文本框的輸入事件 |
change | bindchange /bind:change | 狀態(tài)改變時(shí)觸發(fā) |
事件對象屬性
當(dāng)事件回調(diào)觸發(fā)的時(shí)候,會(huì)收到一個(gè)事件對象event(與js中的事件對象類似),它的詳細(xì)屬性如下表所示:
屬性 | 類型 | 說明 |
---|---|---|
type | String | 事件類型 |
timeStamp | Integer | 頁面打開到觸發(fā)事件所經(jīng)過的毫秒數(shù) |
target | object | 觸發(fā)事件的組件的一些屬性值集合 |
currentTarget | object | 當(dāng)前組件的一些屬性值集合 |
detail | object | 額外的信息 |
touches | Array | 觸摸事件,當(dāng)前停留在屏幕中的觸摸點(diǎn)信息的數(shù)組 |
changedTouches | Array | 觸摸事件,當(dāng)前變化的觸摸點(diǎn)信息的數(shù)組 |
target與currentTarget的區(qū)別
event.target返回的是觸發(fā)該事件的源頭組件,而currentTarget則返回的是當(dāng)前事件所綁定的源頭組件。
如:
給view綁定了單擊事件,在該事件下有一個(gè)按鈕組件,當(dāng)我們單擊按鈕時(shí),event.target返回的就是這個(gè)按鈕組件。而event.currentTarget返回的就是view這個(gè)綁定事件的源頭組件。因此,常用到的是target屬性而非currentTarget屬性。
bindtap語法格式
在小程序中,不存在HTML中的onclick鼠標(biāo)點(diǎn)擊事件,而是通過tap事件來響應(yīng)用戶的觸摸行為。
通過bindtap給組件綁定tap觸摸事件。
如下圖所示:
在頁面wxml文件中綁定觸摸事件
在頁面js中定義相應(yīng)的事件處理函數(shù),事件屬性通過傳入一個(gè)形參來接收。通常為event。
當(dāng)點(diǎn)擊按鈕時(shí),控制臺(tái)便會(huì)輸出。
在事件處理函數(shù)中為data賦值
使用this.setData()方法可以修改data中的數(shù)據(jù)。
在data中定義數(shù)據(jù)。
為事件響應(yīng)函數(shù)添加this.setData方法,并修改其數(shù)值。
在wxml文件中綁定數(shù)據(jù)
實(shí)現(xiàn)效果:
事件傳參
小程序中的事件傳參比較特殊,不能在綁定事件的同時(shí)為事件處理函數(shù)傳遞參數(shù)。如:
<button type="primary" bindtap="butnTap(3)">點(diǎn)擊按鈕+3</button>
這里并不能為butnTap事件函數(shù)傳遞參數(shù),而是將butnTap(3)作為事件函數(shù)名。
為事件傳遞參數(shù)時(shí),使用data-參數(shù)名="{{參數(shù)值}"}
來傳遞參數(shù)。如:
<button type="primary" bindtap="butntTap" data-num="{{3}}">點(diǎn)擊按鈕+3</button>
查看參數(shù)
通過event.target.dataset.參數(shù)名
可查看我們設(shè)置的參數(shù)。
通過該參數(shù)也可修改data中的數(shù)值。
此時(shí)點(diǎn)擊按鈕就自增加3
bindinput語法格式
通過bindinput,可以為文本框綁定輸入事件
<input bindinput="inputBd" ></input>
在頁面js文件中定義事件處理函數(shù)。通過even.detail.value
來獲取文本框中的內(nèi)容。
實(shí)現(xiàn)文本框與data之間的數(shù)據(jù)同步
實(shí)現(xiàn)步驟:
定義數(shù)據(jù)
在頁面js文件中定義文本數(shù)據(jù)
渲染結(jié)構(gòu)
設(shè)置value默認(rèn)值。
<input bindinput="inputBd" value="{<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->{text}}"></input>
美化樣式
將文本框美化一下
input{ border: 1px solid blue; border-radius: 5px; }
綁定input 事件處理函數(shù)
inputBd(event){ // console.log(event.detail.value); this.setData({ text:event.detail.value }) }
輸入文本,此時(shí)data中的text也隨之改變。
到這里本節(jié)內(nèi)容就結(jié)束啦,下期帶大家了解微信小程序中的條件渲染和列表渲染。
總結(jié)
到此這篇關(guān)于微信小程序數(shù)據(jù)綁定、事件綁定以及事件傳參、數(shù)據(jù)同步的文章就介紹到這了,更多相關(guān)小程序數(shù)據(jù)、事件綁定及事件傳參、數(shù)據(jù)同步內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js 替換功能函數(shù),用正則表達(dá)式解決,js的全部替換
js 替換功能函數(shù),用正則表達(dá)式解決,js的全部替換,學(xué)習(xí)js的朋友可以參考下。2010-12-12requestAnimationFrame用法優(yōu)化源碼解析
這篇文章主要介紹了requestAnimationFrame用法優(yōu)化源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10js 獲取html5的data屬性實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄猨s 獲取html5的data屬性實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07對字符串進(jìn)行HTML編碼和解碼的JavaScript函數(shù)
對字符串進(jìn)行HTML編碼和解碼的JS函數(shù),記下了方便以后找 :)2010-02-02基于JavaScript實(shí)現(xiàn)無限加載瀑布流
這篇文章主要為大家詳細(xì)介紹了基于JavaScript實(shí)現(xiàn)無限加載瀑布流,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07手寫TypeScript?時(shí)很多人常犯的幾個(gè)錯(cuò)誤
這篇文章主要介紹了手寫TypeScript?時(shí)很多人常犯的幾個(gè)錯(cuò)誤,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的抽卡,重要的朋友可以參考一下2022-09-09JavaScript如何攔截全局Fetch的請求與響應(yīng)詳解
全局的fetch()方法用于發(fā)起獲取資源的請求,它返回一個(gè)promise,這個(gè)promise會(huì)在請求響應(yīng)后被resolve,并傳回Response對象,這篇文章主要給大家介紹了關(guān)于JavaScript如何攔截全局Fetch的請求與響應(yīng)的相關(guān)資料,需要的朋友可以參考下2024-04-0420個(gè)你不得不知道的JS async/await實(shí)用技巧
JavaScript的async和await關(guān)鍵詞是現(xiàn)代JavaScript異步編程的核心,它們讓異步代碼看起來和同步代碼幾乎一樣,使得異步編程變得更加直觀和易于管理,本文介紹20個(gè)關(guān)于async/await的實(shí)用技巧,將大大提升編程效率和代碼的清晰度,需要的朋友可以參考下2023-12-12