微信小程序 —— 页面传值

gaozllm 2018-10-15 原文

微信小程序 —— 页面传值

小程序页面传值的方式:

1.正向传值:上一页面 –>  下一页面

  1. url传值
  2. 本地储存
  3. 全局的app对象

2.反向传值:下一页面 –>  上一页面

  1. 本地储存
  2. 全局的app对象

先说一下正向传值:

1.url传值:

 通过url传值的需要通过option来获取参数值。

 更多详情可以访问小程序-navigateTo章节

 A页面:

wx.navigateTo({
  url: 'test?id=1'
})

 

B页面:

复制代码
Page({
  data:{
    id:'',
  },
  onLoad: function(option){
    this.setData({
      id:option.id
    })
  }
})
复制代码

 

2.本地存储:

关于缓存,可以先访问小程序-数据缓存稍作了解。

A页面:

wx.setStorageSync('username', 'ddd')

 

B页面:

复制代码
Page({
  data:{
    username:'',
  },
  onLoad: function(){
   var username = wx.getStorageSync('username')
   this.setData({
       username: username
    })
  }
})
复制代码

 

3.全局的app对象

关于app对象,可以访问小程序-注册程序了解相关信息。

A页面:

var app = getApp();
app.username='ddd';

 

B页面:

var app = getApp();
var username = app.username;

 

再说一下反向传值,看了上面那几种方法,聪明的你应该知道反向传值有哪几种方式了。对,就是方法2和方法3:

1.本地存储:

B页面:

wx.setStorageSync('username', 'ddd');
//返回上一页
wx.navigateBack();

 

A页面:

复制代码
Page({
  data:{
    username:'',
  },
  onShow: function(){
   var username = wx.getStorageSync('username')
   this.setData({
       username: username
    })
  }
})
复制代码

 

2.全局的app对象

B页面:

var app = getApp();
app.username='ddd';

 

A页面:

复制代码
var app = getApp(); 

Page({
  data:{
    username:'',
  },
  onShow: function(){
   var username = app.username;
   this.setData({
       username: username
    })
  }
})
复制代码

 

3.在当前页通过获取前一个 page 实例,再赋值

复制代码
var pages = getCurrentPages();
var currPage = pages[pages.length - 1];   //当前页面
var prevPage = pages[pages.length - 2];  //上一个页面
//直接调用上一个页面的 setData() 方法,把数据存到上一个页面中去
prevPage.setData({
  mdata:1 
})
复制代码

这种方法的弊端:因为进入 B 页面的入口可能是很多个。这样做,可能会导致获取到的页面实例不正确。

 

4.通过onfire.js为来实现这个效果

onfire.js的下载地址https://github.com/hustcc/onfire.js

使用思路:

  1. A 页面先订阅一个事件,并定义处理方法; 
  2. 从 B 页面返回时,发送消息; 
  3. A 页面卸载时,解除订阅。

使用方法如下:

A页面代码如下:

复制代码
var onfire = require("../utils/onfire.js");
var that;
var eventObj = onfire.on('key', function () {
    // 当消息被传递时,做具体的事
});
Page({
  data: {
  },
  onLoad: function(options) {
    // Do some initialize when page load.
  },
  onReady: function() {
    // Do something when page ready.
  },
  onUnload: function (e) {
    onfire.un('key');
    onfire.un(eventObj);//移除
  }
})
复制代码

我们可以在 A 页面直接调用 onfire.on 方法,订阅一个名字为 key 的消息。在上面的代码中,消息附带的参数无传参。 
如果需要传参的话,直接在 function 里增加参数即可,例如:

var eventObj = onfire.on('key', function (data){
  // 执行操作
})

需要注意的是,一定要在 onUnload 里(在页面被关闭时)取消订阅消息,并取消绑定 eventObj。

B 页面里代码在回调的地方加入以下代码:

onfire.fire('key');//key 为上文中订阅的消息
// 有参数时
onfire.fire('key','test')

 

方法介绍完毕。各位看官好好享用~

 

参考文章:

小程序2个页面如何接传值

 

一个 JS 库就能解决小程序跨页传递事件消息和数据

posted on 2018-10-15 14:34 小骆驼学代码 阅读() 评论() 编辑 收藏

 

 
版权声明:本文为gaozllm原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/gaozllm/p/9790847.html

微信小程序 —— 页面传值的更多相关文章

  1. 微信小程序 — model弹框

    model弹框:在屏幕中间弹出,让你进行选择: 效果: 代码: <button type="primar […]...

  2. 微信小程序 解决自定义弹出层滑动时下层页面滚动问题

    弹出 fixed 弹窗后,在弹窗上滑动会导致下层的页面一起跟着滚动。 场景一:弹窗内无滚动内容 可以在弹窗最外 […]...

  3. 微信小程序 image图片组件实现宽度固定 高度自适应

    给img的mode设置值   注1:image组件默认宽度300px、高度225px 注2:image组件中二 […]...

  4. 微信小程序(6)–获取屏幕宽度及弹窗滚动与页面滚动冲突

    1.获取屏幕宽度,并赋值给view <view class=”ships-img” […]...

  5. 微信小程序 Request faild 请求后台失败

    首先确认你的域名和ssl证书是否配置完成。 如果后台没有进行域名配置,先去配置一个有效的备案的自持https的 […]...

  6. 微信小程序 js结构 – 倒霉的大熊

    微信小程序 js结构 // pages/index/index.js Page({ /** * 页面的初始数据 […]...

  7. 微信小程序 发现之旅(二)—— 自定义组件

    组件化的项目开发中,组件应当划分为三个层次:组件、模块、页面 微信小程序已经为开发者封装好了基础组件,页面文件 […]...

  8. 微信小程序 折叠效果

    <view class=\'help\'> <view class=\'help_item\ […]...

随机推荐

  1. 随机数的生成

    随机数可以用于项目中的随机生成的订单号之类,蛮实用的小功能。 如图,生成一串17位的随机数,规则是:A代表用户 […]...

  2. OpenCV图像加载与保存

    OpenCV中的图像加载与保存 头文件是包含的库,在GitHub上下载的 imread(”图片路径 […]...

  3. asp.net core 使用HttpClientFactory Polly实现熔断降级

    前言 在++NET Core2.1++后也是增加更新了很多东西,当然HttpClientFactory更新中的 […]...

  4. 网络协议和管理

    阅读内容:   网络概念  OSI模型  网络设备  TCP/IP  IP地址  配置网络  网 […]...

  5. 批量删除多个相同格式内容的Excel表格的列

    Sub Del_Col()Application.DisplayAlerts = FalseDim myFil […]...

  6. LeetCode.数字转罗马数字

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L […]...

  7. jquery下载所有版本(实时更新)

    jquery下载所有版本(实时更新) 原文地址:http://www.jq22.com/jquery-info […]...

  8. Python文件和数据格式化(教程)

    Python文件和数据格式化(教程) 2019-12-01 12:21  鲁尧尧  阅读(…)  […]...

展开目录

目录导航