微信小程序通過點(diǎn)擊事件傳參(data-)的操作示例
前言
大家都知道在 vue 中,我們可以直接在點(diǎn)擊事件中放入傳遞的參數(shù)進(jìn)行傳參;然而微信小程序中并不適用這樣的寫法,但是微信小程序可以通過自定義屬性從而綁定參數(shù)使用。
data- 的用法
微信小程序可以通過直接寫 data-index="1"
進(jìn)行數(shù)據(jù)的綁定 ,利用 bindtap
點(diǎn)擊事件執(zhí)行函數(shù)從而獲取到參數(shù)信息。
<view bindtap="triggers" data-idType="1">點(diǎn)擊我</view>
注意:
data-
是固定的寫法,-
后面可以取任意的名字,但是需要強(qiáng)調(diào)的是在獲取的時(shí)候要寫相對應(yīng)的名字,例如:data-index = "1"
,獲取時(shí)就是e.target.dataset.index
。
下面通過一個(gè)簡單的代碼小實(shí)例帶大家更直觀的了解 data- 的用法。
wxml文件
<!-- 按鈕觸發(fā)事件 --> <view bindtap="triggers" data-idType="1">點(diǎn)擊我</view>
js文件
Page({ data: {}, //點(diǎn)擊事件 triggers(e) { console.log(e.currentTarget.dataset.idtype); // 1 }, })
如下圖:
為什么有些時(shí)候 target
中也可以取到值?
在事件處理中,e.target
和 e.currentTarget
分別表示事件的目標(biāo)元素和當(dāng)前元素。在某些情況下,特別是當(dāng)你綁定事件處理函數(shù)的元素包含子元素時(shí),你可能會在 e.target
中找到你想要的值。
但是,需要注意的是,e.target
和 e.currentTarget
之間的區(qū)別很重要:
e.target
表示觸發(fā)事件的元素,即實(shí)際點(diǎn)擊的元素。e.currentTarget
表示綁定事件處理程序的元素,即當(dāng)前元素。
在你的代碼中,點(diǎn)擊了或 元素,它們都是 e.currentTarget
的子元素,但事件實(shí)際上是在包含它們的元素上觸發(fā)的。因此,使用 e.currentTarget
.dataset 更安全和可靠,因?yàn)樗偸且媚憬壎ㄊ录脑氐臄?shù)據(jù)屬性。
雖然在某些情況下 e.target
也可以包含你想要的數(shù)據(jù),但為了代碼的可維護(hù)性和可讀性,最好使用 e.currentTarget
來獲取數(shù)據(jù)屬性的值,因?yàn)檫@更符合代碼的意圖和結(jié)構(gòu)。
當(dāng)綁定事件處理函數(shù)的元素包含子元素時(shí),可以通過代碼來演示 e.target
和 e.currentTarget
之間的區(qū)別。以下是一個(gè)示例:
wxml文件
<view bindtap="handleClick" data-value="Parent"> <image src="../../assets/cheliang.png" data-value="Child"></image> </view>
js文件
Page({ handleClick(e) { console.log(e.target.dataset.value); // 輸出子元素的值 console.log(e.currentTarget.dataset.value); // 輸出父元素的值 } })
在這個(gè)示例中,有一個(gè)包含圖片的 <view>
元素,點(diǎn)擊圖片或 <view>
元素都會觸發(fā)相同的事件處理函數(shù)。在事件處理函數(shù)中,我們可以演示兩者的區(qū)別:
當(dāng)你點(diǎn)擊圖片時(shí),e.target
表示圖片元素,因此 e.target.dataset.value
輸出子元素的值,即 『Child』。而 e.currentTarget
表示綁定事件的 元素,因此 e.currentTarget.dataset.value
輸出父元素的值,即 『Parent』。
這個(gè)示例清晰地展示了 e.target
和 e.currentTarget
之間的區(qū)別。e.target
始終表示觸發(fā)事件的元素,而 e.currentTarget
始終表示綁定事件的元素。
換一種方式來看
如下圖:
是拿不到 data-value
的值的。
到此這篇關(guān)于微信小程序通過點(diǎn)擊事件傳參(data-)的文章就介紹到這了,更多相關(guān)微信小程序傳參內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS中的算法與數(shù)據(jù)結(jié)構(gòu)之常見排序(Sort)算法詳解
這篇文章主要介紹了JS中的算法與數(shù)據(jù)結(jié)構(gòu)之常見排序(Sort)算法,結(jié)合實(shí)例形式詳細(xì)分析了js常見排序算法中的冒泡排序、選擇排序、插入排序、希爾排序、歸并排序、快速排序等算法相關(guān)實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下2019-08-08javascript自然分類法算法實(shí)現(xiàn)代碼
這篇文章介紹了javascript自然分類法算法實(shí)現(xiàn)代碼,有需要的朋友可以參考一下2013-10-102007/12/23更新創(chuàng)意無限,簡單實(shí)用(javascript log)
在javascript開發(fā)過程中,如果總是使用alert的方式調(diào)試程序,在某些簡單的程序中是可行的. 但是在通常的項(xiàng)目很復(fù)雜,這種方式已經(jīng)很難滿足,企業(yè)級開發(fā)的需要。2007-12-12js console.log打印對像與數(shù)組用法詳解
這篇文章主要介紹了js console.log打印對像與數(shù)組用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了js使用console.log實(shí)現(xiàn)打印對象與數(shù)組的具體實(shí)現(xiàn)步驟與相關(guān)技巧,需要的朋友可以參考下2016-01-01詳解用js代碼觸發(fā)dom事件的實(shí)現(xiàn)方案
這篇文章主要介紹了詳解用js代碼觸發(fā)dom事件的實(shí)現(xiàn)方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06ajax跨域調(diào)用webservice的實(shí)現(xiàn)代碼
這篇文章主要介紹了 ajax跨域調(diào)用webservice服務(wù)例子和理解,最近ajax訪問webservice遇到跨域的問題,網(wǎng)上搜索資料,總結(jié)如下2016-05-05一個(gè)級聯(lián)菜單代碼學(xué)習(xí)及removeClass與addClass的應(yīng)用
最近在學(xué)些web前段的知識,看見博客園首頁左側(cè)的一個(gè)級聯(lián)菜單,很是好奇,于是想自己實(shí)現(xiàn)以下,代碼書寫很簡潔而且易懂,感興趣的朋友可以了解下,希望本文對你學(xué)習(xí)級聯(lián)菜單有所幫助2013-01-01