经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » 微信小程序 » 查看文章
微信小程序:数据存储、传值、取值详解
来源:jb51  时间:2019/5/8 8:41:27  对本文有异议

小程序界面传值

父级界面:A界面
子级界面:B界面

一、url传值

详细的配置参数可以查看组件导航:navigator,这里不再做过多的解释。
1. 正向传值:A界面 –>B界面

用 navigator标签或 wx.navigator传值,A界面向B界面传id值

A界面获取id值传向B界面如果需要传多个参数, 用 & 链接即可

  1. // 方法一:navigator标签传值
  2. <navigator url="/page/index/index?id=110" >传值</navigator>
  3. <navigator url="/page/index/index?id=110&username=jane&password=123456" >传值</navigator>
  4.  
  5. // 方法二: wx.navigator标签传值单值、多值传递
  6. wx.navigateTo({
  7. url: '/page/index/index?id=' + id
  8. })
  9.  
  10. wx.navigateTo({
  11. url: '/page/index/index?id=' + id +'&username='+ username+'&password='+ password
  12. })

B界面接受id值

  1. /**
  2. * 生命周期函数--监听页面加载
  3. */
  4. onLoad: function (options) {
  5. var id = options.id;
  6. this.setData({
  7. id:id,
  8. username:username,
  9. password:password,
  10. })
  11. },

反向传值:B界面 –>A界面

在B界面需要传值地方代码如下

  1. var pages = getCurrentPages() // 获取栈中全部界面的, 然后把数据写入相应界面
  2. var currentPage = pages[pages.length - 1] //当前界面
  3. var prePage = pages[pages.length - 2] //上一个界面
  4. var that = this
  5. prePage.setData({
  6. id: that.data.id,
  7. })

在A界面需要接受B界面传过来值码如下:这里要在onShow方法里面重新调用你的数据请求或是,为了验证是否传值成功,你可以打印验证 注:由于你从B界面返回A界面使用了wx.navigateBack,所以当你回到A界面后onLoad、onReady方法不响应,onShow方法响应,所以这里你需要特别注意--生命周期

  1. /**
  2. * 生命周期函数--监听页面显示
  3. */
  4. onShow: function () {
  5. //获取数据
  6. this.gainData()
  7. // 打印你的传值
  8. console.log("res==", this.data.res)
  9. },

二、本地储存 tips:本地数据存储的大小限制为 10MB

每个微信小程序都可能用到本地缓存数据,这里我们可以通过调用微信提供的方法:wx.setStorage、wx.setStorageSync、wx.getStorage、wx.getStorageSync、wx.clearStorage、wx.clearStorageSync、实现对数据本地缓存、获取、清除。可参考微信小程序【数据缓存】开发文档,查看详情。

在A界面获取数据并缓存到本地

  1. wx.setStorageSync('user_info', dic);

在B界面获取数据并缓存到本地

  1. var user_info = wx.getStorageSync("user_info")
  2. this.setData({
  3. username: user_info.username
  4. });

从本地缓存中同步移除指定 key。这里具体使用同步或是异步需要根据你存储时的方法,或是同步清理本地数据缓存wx.clearStorageSync()

  1. wx.removeStorageSync("user_info")

同理你可以在B界面传值在A界面取值,只不过这里你需要注意存储、获取的顺序,先存后取,否则你是拿不到值的。

三、全局的app对象

这里你需要在app.js文件,写好你要全局使用的数据

  1. //用户数据
  2. appData: {
  3. user_info:null,
  4. }

在你需要赋值的地方引用app,代码如下:

  1. var app = getApp();
  2. app.appData.user_info = {"username""jane"};

在你需要取值的地方引用app,代码如下:

  1. var app = getApp();
  2. var user_info = app.appData.user_info;
  3. this.setData({
  4. username: user_info.username
  5. });

以上所述是小编给大家介绍的微信小程序:数据存储、传值、取值详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对w3xue网站的支持!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号