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


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 相关文章推荐
静态的动态续篇之来点XML
Aug 15 Javascript
用JavaScript实现使用鼠标画线的示例代码
Aug 19 Javascript
浅谈javascript 函数属性和方法
Jan 21 Javascript
javascript实现右侧弹出“分享到”窗口效果
Feb 01 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
May 12 Javascript
AngularJS利用Controller完成URL跳转
Aug 09 Javascript
jQuery实现的自定义滚动条实例详解
Sep 20 Javascript
Vue.js事件处理器与表单控件绑定详解
Mar 20 Javascript
React教程之Props验证的具体用法(Props Validation)
Sep 04 Javascript
vue.js系列中的vue-fontawesome使用
Feb 10 Javascript
从理论角度讨论JavaScript闭包
Apr 03 Javascript
Ajax 的初步实现(使用vscode+node.js+express框架)
Jun 18 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
PHP编码规范-php coding standard
2007/03/16 PHP
怎样去阅读一份php源代码
2009/08/21 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十一)
2014/06/25 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
2014/07/05 PHP
使用PHP生成图片的缩略图的方法
2015/08/18 PHP
js之WEB开发调试利器:Firebug 下载
2007/01/13 Javascript
在JavaScript中使用inline函数的问题
2007/03/08 Javascript
jQuery 1.7.2中getAll方法的疑惑分析
2012/05/23 Javascript
页面定时刷新(1秒刷新一次)
2013/11/22 Javascript
jQuery实现渐变弹出层和弹出菜单的方法
2015/02/20 Javascript
jquery动感漂浮导航菜单代码分享
2020/04/15 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
jQuery Ajax 全局调用封装实例代码详解
2016/06/02 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
javascript遍历json对象的key和任意js对象属性实例
2017/03/09 Javascript
微信小程序图片自适应支持多图实例详解
2017/06/21 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
2017/11/17 Javascript
Vue中自定义全局组件的实现方法
2017/12/08 Javascript
vue做移动端适配最佳解决方案(亲测有效)
2018/09/04 Javascript
Element Input组件分析小结
2018/10/11 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
JS前端广告拦截实现原理解析
2020/02/17 Javascript
利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)
2021/02/24 Javascript
[01:08:24]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第一场 2月5日
2021/03/11 DOTA
Python中序列的修改、散列与切片详解
2017/08/27 Python
keras 使用Lambda 快速新建层 添加多个参数操作
2020/06/10 Python
python如何导出微信公众号文章方法详解
2020/08/31 Python
Python基于execjs运行js过程解析
2020/11/27 Python
详解如何在css3打包后自动追加前缀插件:autoprefixer
2018/12/18 HTML / CSS
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
英国电器零售商:PRC Direct
2018/06/21 全球购物
阿姆斯特丹城市卡:Amsterdam Pass
2019/12/01 全球购物
销售行业个人求职自荐信
2013/09/25 职场文书
渠道运营商合作协议书范本
2014/10/06 职场文书
pytorch 使用半精度模型部署的操作
2021/05/24 Python
浅谈redis整数集为什么不能降级
2021/07/25 Redis