微信小程序开发之数据存储 参数传递 数据缓存


Posted in Javascript onApril 13, 2017

微信小程序开发内测一个月.数据传递的方式很少.经常遇到页面销毁后回传参数的问题,小程序中并没有类似Android的startActivityForResult的方法,也没有类似广播这样的通讯方式,更没有类似eventbus的轮子可用.

现在已知传递参数的方法只找到三种,先总结下.由于正处于内测阶段,文档也不是很稳定,经常修改,目前尚没有人造轮子.

先上GIF:

微信小程序开发之数据存储 参数传递 数据缓存

1.APP.js

我把常用且不会更改的参数放在APP.js的data里面了.在各个page中都可以拿到var app = getApp();

app上就可以拿到存在data中的参数.

2. wx.navigateTo({})中URL携带参数

demo中已经写出:

wx.navigateTo({
 url: "../newpage/newpage?infofromindex=" + this.data.infofromindex,
 });

3.wx.setStorage(OBJECT) 数据缓存

微信开发文档中的数据缓存方法:

①存储数据

try {
 wx.setStorageSync('infofrominput', this.data.infofrominput)
 } catch (e) {
 }

②获取数据

//获取
 wx.getStorage({
  key: 'infofrominput',
  success: function (res) {
  _this.setData({
   infofromstorage: res.data,
  })
  }
 })

key是本地缓存中的指定的 key,data是需要存储的内容.

详情见微信小程序开发文档:文档

贴上代码:

1.index.js

//index.js 
//获取应用实例 
var app = getApp() 
Page({ 
 data: { 
 info: app.data.info, 
 infofromindex: '来自index.js的信息', 
 infofrominput: '' 
 }, 
 onLoad: function () { 
 }, 
 //跳转到新页面 
 gotonewpage: function () { 
 wx.navigateTo({ 
 url: "../newpage/newpage?infofromindex=" + this.data.infofromindex, 
 }); 
 }, 
 //获取输入值 
 searchInputEvent: function (e) { 
 console.log(e.detail.value) 
 this.setData({ infofrominput: e.detail.value }) 
 }, 
 //保存参数 
 saveinput: function () { 
 try { 
 wx.setStorageSync('infofrominput', this.data.infofrominput) 
 } catch (e) { 
 } 
 } 
})

2.index.wxml

<!--index.wxml--> 
<view> 
<button style="background-color:#00ff00;margin:20rpx" bindtap="gotonewpage">跳转</button> 
<input style="background-color:#eee;margin:20rpx;height:80rpx" placeholder="请输入需要保存的参数" bindinput="searchInputEvent" /> 
<button style="background-color:#ff0000;margin:20rpx" bindtap="saveinput">存入Storage</button> 
</view>

3.newpage.js

//newpage.js 
//获取应用实例 
var app = getApp() 
Page({ 
 data: { 
 infofromapp: app.data.infofromapp, 
 infofromindex: '', 
 infofromstorage: '', 
 }, 
 onLoad: function (options) { 
 var _this = this; 
 var infofromindex = options.infofromindex; 
 this.setData({ 
  infofromindex: infofromindex 
 }) 
 //获取 
 wx.getStorage({ 
  key: 'infofrominput', 
  success: function (res) { 
  _this.setData({ 
   infofromstorage: res.data, 
  }) 
  } 
 }) 
 } 
})

4.newpage.wxml

<!--newpage.wxml--> 
<view style="width:100%;margin:30rpx">infofromapp:{{infofromapp}}</view> 
<view style="width:100%;margin:30rpx">infofromindex:{{infofromindex}}</view> 
<view style="width:100%;margin:30rpx">infofromstorage:{{infofromstorage}}</view>

5.app.js

//app.js 
App({ 
 data: { 
 infofromapp: '来自APP.js的信息' 
 }, 
 onLaunch: function () { 
 
 } 
})

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
最常用的12种设计模式小结
Aug 09 Javascript
JQuery实现表格中相同单元格合并示例代码
Jun 26 Javascript
Jquery操作js数组及对象示例代码
May 11 Javascript
Javascript中的getUTCHours()方法使用详解
Jun 10 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
Jun 15 Javascript
jquery图片倾斜层叠切换特效代码分享
Aug 27 Javascript
微信小程序page的生命周期和音频播放及监听实例详解
Apr 07 Javascript
ES6中参数的默认值语法介绍
May 03 Javascript
很棒的vue弹窗组件
May 24 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
Jun 04 Javascript
解决vue单页面修改样式无法覆盖问题
Aug 05 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
Aug 25 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
Apr 13 #jQuery
老生常谈javascript中逻辑运算符&amp;&amp;和||的返回值问题
Apr 13 #Javascript
JS实现移动端实时监听输入框变化的实例代码
Apr 12 #Javascript
详解vue的数据binding绑定原理
Apr 12 #Javascript
angular学习之ngRoute路由机制
Apr 12 #Javascript
Node.js发送HTTP客户端请求并显示响应结果的方法示例
Apr 12 #Javascript
微信小程序登录态控制深入分析
Apr 12 #Javascript
You might like
PHP5中的时间相差8小时的解决办法
2008/03/28 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
Javascript this关键字使用分析
2008/10/21 Javascript
jquery $.ajax各个事件执行顺序
2010/10/15 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
2011/07/08 Javascript
js中arguments的用法(实例讲解)
2013/11/30 Javascript
js select option对象小结
2013/12/20 Javascript
jquery 淡入淡出效果的简单实现
2014/02/07 Javascript
基于js实现checkbox批量选中操作
2016/11/22 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
实例详解JSON取值(key是中文或者数字)方式
2017/08/24 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
微信小程序url传参写变量的方法
2018/08/09 Javascript
jQuery实现根据身份证号获取生日、年龄、性别等信息的方法
2019/01/09 jQuery
vue父子组件的通信方法(实例详解)
2019/11/10 Javascript
使用Taro实现小程序商城的购物车功能模块的实例代码
2020/06/05 Javascript
一篇文章看懂JavaScript中的回调
2021/01/05 Javascript
Python进行数据科学工作的简单入门教程
2015/04/01 Python
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
Python2包含中文报错的解决方法
2018/07/09 Python
python 通过麦克风录音 生成wav文件的方法
2019/01/09 Python
浅谈Python编程中3个常用的数据结构和算法
2019/04/30 Python
python根据多个文件名批量查找文件
2019/08/13 Python
numpy 返回函数的上三角矩阵实例
2019/11/25 Python
django数据模型(Model)的字段类型解析
2019/12/25 Python
Python实现电视里的5毛特效实例代码详解
2020/05/15 Python
中学教师教育感言
2014/02/21 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
春季运动会开幕词
2015/01/28 职场文书
表扬信范文
2015/05/04 职场文书
交通安全月活动总结
2015/05/08 职场文书
培训班开班主持词
2015/07/02 职场文书
会计岗位工作总结
2015/08/12 职场文书
药品销售员2015年终工作总结
2015/10/22 职场文书
新手必备之MySQL msi版本下载安装图文详细教程
2021/05/21 MySQL
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL