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


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 相关文章推荐
文本框输入时 实现自动提示(像百度、google一样)
Apr 05 Javascript
javascript等号运算符使用详解
Apr 16 Javascript
JS实现的表格操作类详解(添加,删除,排序,上移,下移)
Dec 22 Javascript
Angular2开发——组件规划篇
Mar 28 Javascript
前端开发不得不知的10个最佳ES6特性
Aug 30 Javascript
JavaScript实现图片拖曳效果
Sep 08 Javascript
JavaScript数组的5种迭代方法
Sep 29 Javascript
JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例
Jul 30 Javascript
解决jquery的ajax调取后端数据成功却渲染失败的问题
Aug 08 jQuery
VUE 实现滚动监听 导航栏置顶的方法
Sep 11 Javascript
如何利用ES6进行Promise封装总结
Feb 11 Javascript
详解vue高级特性
Jun 09 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
WindowsXP中快速配置Apache+PHP5+Mysql
2008/06/05 PHP
php error_log 函数的使用
2009/04/13 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
2014/06/22 PHP
PHP函数import_request_variables()用法分析
2016/04/02 PHP
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
2019/12/13 PHP
我见过最全的个人js加解密功能页面
2007/12/12 Javascript
用jquery ajax获取网站Alexa排名的代码
2009/12/12 Javascript
爆炸式的JS圆形浮动菜单特效代码
2010/03/03 Javascript
细说浏览器特性检测(2)-通用事件检测
2010/11/05 Javascript
jQuery html()方法使用不了无法显示内容的问题
2014/08/06 Javascript
2014最热门的JavaScript代码高亮插件推荐
2014/11/25 Javascript
jQuery中element选择器用法实例
2014/12/29 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
2016/04/08 Javascript
jQuery链式调用与show知识浅析
2016/05/11 Javascript
原生JS实现图片轮播效果
2016/12/26 Javascript
在React项目中使用Eslint代码检查工具及常见问题
2018/10/10 Javascript
vue将文件/图片批量打包下载zip的教程
2020/10/21 Javascript
修改NPM全局模式的默认安装路径的方法
2020/12/15 Javascript
浅析JavaScript中的事件委托机制跟深浅拷贝
2021/01/20 Javascript
Python编写一个闹钟功能
2017/07/11 Python
一文总结学习Python的14张思维导图
2017/10/17 Python
Python实现的归并排序算法示例
2017/11/21 Python
python实现windows壁纸定期更换功能
2019/01/21 Python
Python3 修改默认环境的方法
2019/02/16 Python
python 两种方法删除空文件夹
2020/09/29 Python
以色列的身体护理及家居香薰品牌:Sabon NYC
2018/02/23 全球购物
美国职棒大联盟的官方手套、球和头盔:Rawlings
2020/02/15 全球购物
C++如何引用一个已经定义过的全局变量
2014/08/25 面试题
儿子满月酒致辞
2015/07/29 职场文书
制定企业培训计划的五大要点!
2019/07/10 职场文书
少儿励志名言(80句)
2019/08/14 职场文书
祝福语集锦:给满月宝宝的祝福语
2019/11/20 职场文书
如何在向量化NumPy数组上进行移动窗口
2021/05/18 Python
Python趣味挑战之用pygame实现简单的金币旋转效果
2021/05/31 Python
python面向对象版学生信息管理系统
2021/06/24 Python