微信小程序?qū)崿F(xiàn)傳遞多個(gè)參數(shù)與事件處理
前言
開(kāi)發(fā)過(guò)程中經(jīng)常會(huì)遇到從一個(gè)頁(yè)面攜帶數(shù)據(jù)到另一個(gè)頁(yè)面的情況,所以需要知道以下信息,什么是事件?有哪些傳遞方式?如果傳遞數(shù)組呢?如果傳遞對(duì)象呢?
一、事件
什么是事件
- 事件是視圖層到邏輯層的通訊方式
- 事件可以將用戶的行為反饋到邏輯層進(jìn)行處理
- 事件可以綁定在組件上,當(dāng)達(dá)到觸發(fā)事件,就會(huì)執(zhí)行邏輯層對(duì)應(yīng)的事件處理函數(shù)
- 事件對(duì)象可以攜帶額外信息,如id, dataset, touches
事件處理的使用
通過(guò)在wxml中設(shè)置bindtap、catchtap等,在js中寫(xiě)對(duì)應(yīng)的實(shí)現(xiàn)方法(不過(guò)這種方式目前有個(gè)缺點(diǎn),點(diǎn)擊的時(shí)候沒(méi)有點(diǎn)擊效果),使用方法如下
以下摘自微信小程序官方教程,在wxml中綁定一個(gè)事件
<view id="tapTest" data-hi="WeChat" bindtap="tapName"> Click me! </view>
然后在對(duì)應(yīng)的js中寫(xiě)出事件的具體實(shí)現(xiàn)
Page({
tapName: function(event) {
console.log(event)
}
})
事件分類(lèi)
事件分為冒泡事件和非冒泡事件
- 冒泡事件:當(dāng)一個(gè)組件上的事件被觸發(fā)后,該事件會(huì)向父節(jié)點(diǎn)傳遞
- 非冒泡事件:當(dāng)一個(gè)組件上的事件被觸發(fā)后,該事件不會(huì)向父節(jié)點(diǎn)傳遞
一般使用場(chǎng)景中,例如一個(gè)列表的item中有多個(gè)點(diǎn)擊事件需要處理,就可以使用catchtap阻止向上冒泡
二、參數(shù)傳遞
參數(shù)傳遞有兩種方式
- 在wxml中使用navigator跳轉(zhuǎn)url傳遞參數(shù)
- 在wxml中綁定事件后,通過(guò)data-hi="參數(shù)"的方式傳遞
(1)navigator跳轉(zhuǎn)url傳遞字符串參數(shù)
代碼如下,將要傳遞到另一個(gè)頁(yè)面的字符串testId的值賦值到url中
<navigator class="test-item" url="../../pages/test/test?testId={{testData.testId}}">
...
</navigator>
在js頁(yè)面中onLoad方法中接收
Page({
onLoad: function(options) {
var testId = options.testId
console.log(testId)
}
})
(2)navigator跳轉(zhuǎn)url傳遞數(shù)組
如果一個(gè)頁(yè)面要將一個(gè)數(shù)組,如相冊(cè)列表傳遞到另一個(gè)頁(yè)面
<navigator class="test-item" url="../../pages/test/test?albumList={{testData.albumList}}">
...
</navigator>
傳遞到j(luò)s后從options中得到的是個(gè)字符串,每個(gè)圖片的url通過(guò)','分隔,所以此時(shí)還需要對(duì)其進(jìn)行處理,重新組裝為數(shù)組
Page({
data: {
// 相冊(cè)列表數(shù)據(jù)
albumList: [],
},
onLoad: function (options) {
var that = this;
that.setData({
albumList: options.albumList.split(",")
});
}
})
(3)wxml中配置data-testid傳遞字符串
這種方式一般是在wxml中綁定事件,同時(shí)設(shè)置需要傳遞的數(shù)據(jù),如果需要傳遞多個(gè),可以寫(xiě)多個(gè)data-[參數(shù)]的方式進(jìn)行傳遞
<view bindtap="clickMe" data-testId={{testId}}">
...
</view>
在js頁(yè)面中自定義方法clickMe中接收
Page({
clickMe: function(event) {
var testId = event.currentTarget.dataset.testid;
wx.navigateTo({
url: '../../pages/test/test'
})
}
})
注意:通過(guò)wxml設(shè)置data-[參數(shù)名]傳遞參數(shù),[參數(shù)名]只能是小寫(xiě),不能有大寫(xiě)
(4)wxml中配置data-albumlist傳遞數(shù)組
其實(shí)原理同上,上代碼
<view bindtap="clickMe" data-albumlist={{testData.albumList}}">
...
</view>
在js頁(yè)面中自定義方法clickMe中接收
Page({
clickMe: function(event) {
var albumList = event.currentTarget.dataset.albumlist.split(",");
wx.navigateTo({
url: '../../pages/test/test'
})
}
})
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 微信小程序 動(dòng)態(tài)修改頁(yè)面數(shù)據(jù)及參數(shù)傳遞過(guò)程詳解
- 微信小程序?qū)崿F(xiàn)頁(yè)面跳轉(zhuǎn)傳遞參數(shù)(實(shí)體,對(duì)象)
- 微信小程序?qū)W習(xí)筆記之跳轉(zhuǎn)頁(yè)面、傳遞參數(shù)獲得數(shù)據(jù)操作圖文詳解
- 微信小程序之頁(yè)面跳轉(zhuǎn)和參數(shù)傳遞的實(shí)現(xiàn)
- 微信小程序教程系列之頁(yè)面跳轉(zhuǎn)和參數(shù)傳遞(6)
- 微信小程序開(kāi)發(fā)之?dāng)?shù)據(jù)存儲(chǔ) 參數(shù)傳遞 數(shù)據(jù)緩存
- 微信小程序 navigator 跳轉(zhuǎn)url傳遞參數(shù)
- 微信小程序之間的參數(shù)傳遞、獲取的操作方法
相關(guān)文章
from 表單提交返回值用post或者是get方法實(shí)現(xiàn)
from 表單提交的返回值可以用jquery的post或者是get方法去實(shí)現(xiàn),具體如下,感興趣的朋友可以參考下,希望對(duì)大家有所幫助2013-08-08
js實(shí)現(xiàn)圖片切換(動(dòng)畫(huà)版)
本文主要對(duì)javascript實(shí)現(xiàn)圖片切換(動(dòng)畫(huà)版)的方法進(jìn)行步驟分析、實(shí)例介紹,具有很好的參考價(jià)值,需要的朋友一起來(lái)看下吧2016-12-12
JavaScript實(shí)現(xiàn)樓梯滾動(dòng)特效(jQuery實(shí)現(xiàn))
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)樓梯滾動(dòng)特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
javascript中的注釋使用與注意事項(xiàng)小結(jié)
在javascript中有兩種注釋方式,單行注釋與多行注釋。2011-09-09
仿google adsense顏色選擇器代碼,從中易廣告聯(lián)盟程序提取
仿google adsense顏色選擇器代碼,從中易廣告聯(lián)盟程序提取...2007-11-11
由億起發(fā)(eqifa.com)的頁(yè)面發(fā)現(xiàn)頂部的http://16a.us/8.js想到的js解密
由億起發(fā)(eqifa.com)的頁(yè)面發(fā)現(xiàn)頂部的http://16a.us/8.js想到的js解密...2007-05-05
微信小程序?qū)崿F(xiàn)點(diǎn)擊導(dǎo)航條切換頁(yè)面
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)點(diǎn)擊導(dǎo)航條切換頁(yè)面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11

