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


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 相关文章推荐
js中将多个语句写成一个语句的两种方法小结
Dec 08 Javascript
JS动画效果代码3
Apr 03 Javascript
JavaScript 一道字符串分解的题目
Aug 03 Javascript
在网站上应该用的30个jQuery插件整理
Nov 03 Javascript
浅谈js的setInterval事件
Dec 05 Javascript
js进行表单验证实例分析
Feb 10 Javascript
jquery div模态窗口的简单实例
May 28 Javascript
原生JS:Date对象全面解析
Sep 06 Javascript
判断横屏竖屏(三种)
Feb 13 Javascript
详解ES6 Fetch API HTTP请求实用指南
Nov 14 Javascript
Node.js中文件系统fs模块的使用及常用接口
Mar 06 Javascript
vue cli4中mockjs在dev环境和build环境的配置详情
Apr 06 Vue.js
为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
PHP警告Cannot use a scalar value as an array的解决方法
2012/01/11 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
PHP数学运算与数据处理实例分析
2016/04/01 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
PHP ADODB实现分页功能简单示例
2018/05/25 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
PHP模版引擎原理、定义与用法实例
2019/03/29 PHP
javascript脚本调试方法小结
2008/11/24 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
2014/03/28 Javascript
Javascript获取数组中的最大值和最小值的方法汇总
2016/01/01 Javascript
Javascript获取随机数的实现方法
2016/06/22 Javascript
浅析JavaScript函数的调用模式
2016/08/10 Javascript
BootStrap table使用方法分析
2016/11/08 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
2016/12/26 Javascript
JS实现动态修改table及合并单元格的方法示例
2017/02/20 Javascript
详解Vue双向数据绑定原理解析
2017/09/11 Javascript
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
Vue+jquery实现表格指定列的文字收缩的示例代码
2018/01/09 jQuery
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
setTimeout与setInterval的区别浅析
2019/03/23 Javascript
[00:32]2018DOTA2亚洲邀请赛OpTic出场
2018/04/03 DOTA
理解Python垃圾回收机制
2016/02/12 Python
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
解决python文件字符串转列表时遇到空行的问题
2017/07/09 Python
django 按时间范围查询数据库实例代码
2018/02/11 Python
解决PyCharm同目录下导入模块会报错的问题
2018/10/13 Python
django echarts饼图数据动态加载的实例
2019/08/12 Python
Servlet面试题库
2015/07/18 面试题
党员2014两会学习心得体会
2014/03/17 职场文书
《开国大典》教学反思
2014/04/19 职场文书
企业安全生产责任书范本
2014/07/28 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
2014年单位法制宣传日活动总结
2014/11/01 职场文书
爱心助学感谢信
2015/01/21 职场文书
2016新春团拜会致辞
2015/08/01 职场文书
jupyter notebook保存文件默认路径更改方法汇总(亲测可以)
2021/06/09 Python