一文帶你了解微信小程序數(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語法(雙大括號) 將變量包起來即可。
語法:
<view>{{定義的數(shù)據(jù)名稱}}</view>
Mustache語法的應(yīng)用
綁定內(nèi)容
綁定內(nèi)容即為文本的綁定,就如上述例子中將一個字符串綁定到view的文本節(jié)點中。
綁定屬性
綁定屬性即將一個數(shù)據(jù)綁定在一個標(biāo)簽的屬性節(jié)點中。
如:在頁面js文件的data中添加一個src數(shù)據(jù)。
在頁面wxml文件中使用Mustache語法將其綁定在image
標(biāo)簽的屬性節(jié)點中。
運算(三元運算、算術(shù)運算等)
在小程序的編譯中也可以進行運算操作。
三元運算
如:
在頁面js文件中添加data數(shù)據(jù)。
在頁面.wxml中綁定該數(shù)據(jù),并進行判斷.
算數(shù)運算
如:
在頁面js文件中的data中添加數(shù)據(jù)。
在頁面wxml中進行數(shù)據(jù)綁定,并進行計算。
事件綁定
什么是事件?
事件是渲染層到邏輯層的通訊方式。通過事件可以將用戶在渲染層產(chǎn)生的行為,反饋到邏輯層進行業(yè)務(wù)的處理。與html類似,相當(dāng)于用戶與小程序的交互。
常用事件
事件 | 用法 | 說明 |
---|---|---|
tap | bindtap /bind:tap | 手指觸摸后馬上離開,相當(dāng)于html中的click事件 |
input | bindinput /bind:input | 文本框的輸入事件 |
change | bindchange /bind:change | 狀態(tài)改變時觸發(fā) |
事件對象屬性
當(dāng)事件回調(diào)觸發(fā)的時候,會收到一個事件對象event(與js中的事件對象類似),它的詳細屬性如下表所示:
屬性 | 類型 | 說明 |
---|---|---|
type | String | 事件類型 |
timeStamp | Integer | 頁面打開到觸發(fā)事件所經(jīng)過的毫秒數(shù) |
target | object | 觸發(fā)事件的組件的一些屬性值集合 |
currentTarget | object | 當(dāng)前組件的一些屬性值集合 |
detail | object | 額外的信息 |
touches | Array | 觸摸事件,當(dāng)前停留在屏幕中的觸摸點信息的數(shù)組 |
changedTouches | Array | 觸摸事件,當(dāng)前變化的觸摸點信息的數(shù)組 |
target與currentTarget的區(qū)別
event.target返回的是觸發(fā)該事件的源頭組件,而currentTarget則返回的是當(dāng)前事件所綁定的源頭組件。
如:
給view綁定了單擊事件,在該事件下有一個按鈕組件,當(dāng)我們單擊按鈕時,event.target返回的就是這個按鈕組件。而event.currentTarget返回的就是view這個綁定事件的源頭組件。因此,常用到的是target屬性而非currentTarget屬性。
bindtap語法格式
在小程序中,不存在HTML中的onclick鼠標(biāo)點擊事件,而是通過tap事件來響應(yīng)用戶的觸摸行為。
通過bindtap給組件綁定tap觸摸事件。
如下圖所示:
在頁面wxml文件中綁定觸摸事件
在頁面js中定義相應(yīng)的事件處理函數(shù),事件屬性通過傳入一個形參來接收。通常為event。
當(dāng)點擊按鈕時,控制臺便會輸出。
在事件處理函數(shù)中為data賦值
使用this.setData()方法可以修改data中的數(shù)據(jù)。
在data中定義數(shù)據(jù)。
為事件響應(yīng)函數(shù)添加this.setData方法,并修改其數(shù)值。
在wxml文件中綁定數(shù)據(jù)
實現(xiàn)效果:
事件傳參
小程序中的事件傳參比較特殊,不能在綁定事件的同時為事件處理函數(shù)傳遞參數(shù)。如:
<button type="primary" bindtap="butnTap(3)">點擊按鈕+3</button>
這里并不能為butnTap事件函數(shù)傳遞參數(shù),而是將butnTap(3)作為事件函數(shù)名。
為事件傳遞參數(shù)時,使用data-參數(shù)名="{{參數(shù)值}"}
來傳遞參數(shù)。如:
<button type="primary" bindtap="butntTap" data-num="{{3}}">點擊按鈕+3</button>
查看參數(shù)
通過event.target.dataset.參數(shù)名
可查看我們設(shè)置的參數(shù)。
通過該參數(shù)也可修改data中的數(shù)值。
此時點擊按鈕就自增加3
bindinput語法格式
通過bindinput,可以為文本框綁定輸入事件
<input bindinput="inputBd" ></input>
在頁面js文件中定義事件處理函數(shù)。通過even.detail.value
來獲取文本框中的內(nèi)容。
實現(xiàn)文本框與data之間的數(shù)據(jù)同步
實現(xiàn)步驟:
定義數(shù)據(jù)
在頁面js文件中定義文本數(shù)據(jù)
渲染結(jié)構(gòu)
設(shè)置value默認值。
<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 }) }
輸入文本,此時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ù),用正則表達式解決,js的全部替換
js 替換功能函數(shù),用正則表達式解決,js的全部替換,學(xué)習(xí)js的朋友可以參考下。2010-12-12requestAnimationFrame用法優(yōu)化源碼解析
這篇文章主要介紹了requestAnimationFrame用法優(yōu)化源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10對字符串進行HTML編碼和解碼的JavaScript函數(shù)
對字符串進行HTML編碼和解碼的JS函數(shù),記下了方便以后找 :)2010-02-02JavaScript如何攔截全局Fetch的請求與響應(yīng)詳解
全局的fetch()方法用于發(fā)起獲取資源的請求,它返回一個promise,這個promise會在請求響應(yīng)后被resolve,并傳回Response對象,這篇文章主要給大家介紹了關(guān)于JavaScript如何攔截全局Fetch的請求與響應(yīng)的相關(guān)資料,需要的朋友可以參考下2024-04-04