微信小程序傳值常用的4種方式
一、使用全局變量傳遞數(shù)據(jù)
提示:利用 app.js 中的 globalData 將數(shù)據(jù)存儲(chǔ)為全局變量,在需要使用的頁(yè)面通過(guò) getApp().globalData 獲取
// 步驟一:在全局app.js文件中定義數(shù)據(jù)
App({
globalData: {
userName: '全局變量傳值',
}
})
// 步驟二:獲取應(yīng)用實(shí)例,不然無(wú)法調(diào)用全局變量
const app = getApp()
// 步驟三:調(diào)用全局變量
Page({
data: {
},
onLoad: function (options) {
console.log(app.globalData.userName);
},
})二、本地存儲(chǔ)傳遞數(shù)據(jù)
提示:利用微信小程序提供的本地存儲(chǔ) wx.setStorageSync 與 wx.getStorageSync 進(jìn)行傳值。
設(shè)值:wx.setStorageSync('title', title)
取值:var title=wx.getStorageSync('title')
三、使用路由傳遞數(shù)據(jù)
傳遞:
// 跳轉(zhuǎn)的同時(shí)攜帶數(shù)據(jù)拼接在URL后面,跳轉(zhuǎn)到的頁(yè)面利用onLoad()方法的參數(shù)options即可獲取到傳遞的參數(shù)
wx.navigateTo({
url: `跳轉(zhuǎn)路由?data=${data}`,
})接收:
onLoad(options){
console.log(options)
}注意:如若因?yàn)閭鬟f的是對(duì)象類型的數(shù)據(jù),到另一個(gè)頁(yè)面獲取時(shí)會(huì)發(fā)現(xiàn)是"[object,object]",解決方法是利用JSON.stringify()和JSON.parse()
傳遞:
const data = JSON.stringify(this.data);
wx.redirectTo({
url: `跳轉(zhuǎn)url?data=${data}`
})接收:
onLoad(options){
const data = JSON.parse(JSON.stringify(options.data));
}四、父子組件之間傳值
- 父向子傳值使用的是屬性綁定,子組件中 的
properties對(duì)象 進(jìn)行接收父組件傳遞過(guò)來(lái)的值 - 子向父傳值使用的是自定義事件,父組件通過(guò)自定義事件中的 事件對(duì)象e 來(lái)接收子組件傳遞過(guò)來(lái)的值
父向子傳值
- 創(chuàng)建一個(gè)
components文件夾 用于存放子組件。在components文件夾下創(chuàng)建我們的子組件child, 創(chuàng)建成任何名字都可以,這里創(chuàng)建成child。

- 創(chuàng)建好以后就是引入,把
子組件 child引入到父組件 index中去。 這里說(shuō)明一下,此案例創(chuàng)建了兩個(gè)頁(yè)面,一個(gè)是pages節(jié)點(diǎn)下的index路由頁(yè)面,一個(gè)是components節(jié)點(diǎn)下的child組件 。
//在父組件的 json 文件中的 usingComponents節(jié)點(diǎn)下 引入
{
"usingComponents": {
"child":"../../components/child/child"
}
}- 渲染子組件內(nèi)容到父組件上
給組件起的自定義名字是 child 那么 我們渲染的時(shí)候就 在 index 父組件 里寫(xiě)上一組 <child><child> 標(biāo)簽即可
- 父組件
<child name="{{ name }}" age="{{ age }}" ></child>
export default{
data(){
return{
name:"老五",
age:50
}
}
}子組件
<view>
這是父組件傳遞過(guò)來(lái)的值 name: {{ name }}-----age {{age}}
</view>
// 接受父組件傳遞過(guò)來(lái)的值
properties: {
name:{
type:String,
value:'我是默認(rèn)值:哈哈'
},
age:{
type:Number,
value:'我是默認(rèn)值: 100'
}
},子向父?jìng)髦?/strong>
- 子組件
WXML
<!-- 點(diǎn)擊按鈕向父組件傳值 --> <button bindtap="send">點(diǎn)擊按鈕向父組件傳值</button>
JS
?
? data: {
msg:'我是子組件的值'
},
methods: {
send(){
this.triggerEvent('send',this.data.msg)
}
},
- 父組件
父組件中定義一下這個(gè)自定義事件bindsend="send"
WXML
<child name="{{ name }}" age="{{ age }}" bindsend="send"></child>JS
// 父組件接受子組件傳遞過(guò)來(lái)的值
send(e){
console.log(e.detail);
}附:解決微信小程序跳轉(zhuǎn)url傳參對(duì)象數(shù)據(jù)過(guò)長(zhǎng)報(bào)錯(cuò)的問(wèn)題
最近開(kāi)發(fā)微信小程序 碰到的一個(gè)小問(wèn)題,那就是 跳轉(zhuǎn)url的時(shí)候,傳對(duì)象數(shù)據(jù)過(guò)長(zhǎng)的問(wèn)題,小程序在傳對(duì)象的時(shí)候要先用JSON.stringify()轉(zhuǎn)換一下,接受頁(yè)面在用JSON.parse()再轉(zhuǎn)換回來(lái)。
但是這樣有一個(gè)問(wèn)題,數(shù)據(jù)過(guò)長(zhǎng)會(huì)報(bào)錯(cuò),或者是只拿到了一部分




這個(gè)時(shí)候我們就需要用到兩個(gè) 方法
encodeURIComponent(obj) 跳轉(zhuǎn)url時(shí)的轉(zhuǎn)換方法 decodeURIComponent(options.obj) 頁(yè)面接收參數(shù)頁(yè)面的轉(zhuǎn)換方法



這樣就OK了?。。。?/p>
總結(jié)
到此這篇關(guān)于微信小程序傳值常用的4種方式的文章就介紹到這了,更多相關(guān)微信小程序傳值方式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Cpage.js給組件綁定事件的實(shí)現(xiàn)代碼
Cpage.js是一款輕量級(jí)的Mvvm框架,使用TypeScript(JavaScript的超集)開(kāi)發(fā)。下面通過(guò)本文給大家分享Cpage.js給組件綁定事件的實(shí)現(xiàn)代碼,需要的的朋友參考下吧2017-08-08
微信分享invalid signature簽名錯(cuò)誤踩過(guò)的坑
這篇文章主要介紹了微信分享invalid signature簽名錯(cuò)誤踩過(guò)的坑,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
原生js 封裝get ,post, delete 請(qǐng)求的實(shí)例
下面小編就為大家?guī)?lái)一篇原生js 封裝get ,post, delete 請(qǐng)求的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
javascript 動(dòng)態(tài)樣式添加的簡(jiǎn)單實(shí)現(xiàn)
下面小編就為大家?guī)?lái)一篇javascript 動(dòng)態(tài)樣式添加的簡(jiǎn)單實(shí)現(xiàn)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10
用js實(shí)現(xiàn)判斷當(dāng)前網(wǎng)址的來(lái)路如果不是指定的來(lái)路就跳轉(zhuǎn)到指定頁(yè)面
用js實(shí)現(xiàn)判斷當(dāng)前網(wǎng)址的來(lái)路如果不是指定的來(lái)路就跳轉(zhuǎn)到指定頁(yè)面,需要的朋友可以參考下。2011-05-05
JavaScript flash復(fù)制庫(kù)類 Zero Clipboard
開(kāi)發(fā)中經(jīng)常會(huì)用到復(fù)制的功能,在 IE 下實(shí)現(xiàn)比較簡(jiǎn)單。但要想做到跨瀏覽器比較困難了。2011-01-01
JS實(shí)現(xiàn)Date日期格式的本地化的方法小結(jié)
為了更好的更新多語(yǔ)言日期的顯示,所以希望實(shí)現(xiàn)日期的本地化格式顯示要求,常規(guī)的特殊字符型格式化無(wú)法滿足顯示要求,這里整理了幾種我思考實(shí)現(xiàn)的本地化實(shí)現(xiàn)功能2024-06-06
JScript 腳本實(shí)現(xiàn)文件下載 一般用于下載木馬
腳本實(shí)現(xiàn)文件下載,這個(gè)是jscript的,腳本之家以前曾發(fā)布vbscript版本的,原理一樣的。2009-10-10
JavaScript實(shí)現(xiàn)元素滾動(dòng)條到達(dá)一定位置循環(huán)追加內(nèi)容
下面小編就為大家分享一篇JavaScript實(shí)現(xiàn)元素滾動(dòng)條到達(dá)一定位置循環(huán)追加內(nèi)容,具有很好的參考價(jià)值,希望對(duì)大家有所幫助2017-12-12

