小程序页面之间传值

Posted 双鱼座的天蝎

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小程序页面之间传值相关的知识,希望对你有一定的参考价值。

方式一)app.js

app.js是全局对象,每个页面都可以引用这个js,里面的globalData就是存放全局变量。

//app.js
App({ globalData: { appName:
‘旧的名字‘ } })
//test.js
const app = getApp();

Page({
    onShow:function(){
        var name=app.globalData.appName;
     app.globalData.appName=‘新的名字‘; } })
此方式通常用于系统配置,适用于常量或者不经常变化的变量。
 

方式二)本地缓存

本地缓存非常强大,可以将用户产生的数据做本地的持久化,键值对应,可选择同步或异步读写操作。

wx.setStorage             //异步覆盖key内容
wx.getStorage             //异步获取key内容
wx.removeStorage          //异步移除指定key
wx.clearStorage           //异步清理所有key
wx.getStorageInfo         //异步获取缓存相关信息

wx.setStorageSync         //同步覆盖key内容
wx.getStorageSync         //同步获取key内容
wx.removeStorageSync     //同步移除指定key
wx.clearStorageSync       //同步清理所有key
wx.getStorageInfoSync     //同步获取缓存相关信息
//pageA.js
var appInfo={
    name:‘旧的名字‘,
    version:‘1.0‘
}
wx.setStorageSync(‘appInfo‘,appInfo);//新增
//pageB.js
var appInfo=wx.getStorageSync(‘appInfo‘);//读取
appInfo.name=‘新的名字‘;
wx.setStorageSync(‘appInfo‘,appInfo);//修改

//删除操作
wx.removeStorageSync({
    key:‘appInfo‘
});

此方式通常用于高频变化的用户变量。

 

方式三)URL

URL传值是传统的古老方式,小程序也支持,只需将参数放在url?后面就可以了

//pageA.js
wx.navigateTo({
      url: ‘/pages/pageB?appname=A&version=1.0‘,
})
//pageB.js
Page({
    onLoad:function(options){
        var appName=options.appname;
        var appVersion=options.version;
    }
})

此方式用于临时性且非敏感数据。

注意:1)url参数不区分大小写    2)在tab页面中(wx.switchTab)不允许参数传值

 

方式四)页面跳转传值

当页面A跳转到页面B,在B页面可以对A页面值进行读取和修改,即子页面操作父页面数据

//pageA.js
Page({
   data:{
        appInfo:{
            appName:‘旧的名字‘,
            version:‘1.0‘
        }
    }
    onLoad:function(options){
        wx.navigateTo({
            url: ‘/pages/pageB‘,
        })
    }
})        
//pageB.js
Page({
    onLoad:function(options){
        var pages=getCurrentPages();
        var pageA=pages[pages.length-2];
        var app=pageA.data.appInfo;
        app.appName=‘新的名字‘;
        pageA.setData({
            appInfo:app
        })
    }
})

此方式用于父子页面传值。即子页面修改父级,修改父父级,修改父父父级。

 

方式五)模板组件

这里只举简单例子,详情参阅小程序官方文档。

//temp.wxml
<template name="appInfo">
    <view>
        <text>name:{{appName}}</text>
        <text>version:{{appVersion}}</text>
    </view>
</template>
//page.wxml
<template is="appInfo" data="{{appInfo}}">
//page.js
Page({
    data:{
        appInfo:{
            appName:‘旧的数据‘,
            version:‘1.0‘
        }
    }
})

 

以上是关于小程序页面之间传值的主要内容,如果未能解决你的问题,请参考以下文章

小程序页面传递数据 、传递数组对象 小程序传值

微信小程序- 父组件传值给子组件

微信小程序开发者工具page如何引用其他函数里的变量

js和jsp之间相互传值

微信小程序的组件间三种传值方式

微信小程序页面传值详解