zoukankan      html  css  js  c++  java
  • 微信小程序之更新上一页数据(十二)

    小程序开发过程中经常有这种需求,需要把当前页面数据传递给上一个页面,但是wx.navigateBack()无法传递数据。

    一般的办法是把当前页面数据放入本地缓存,上一个页面再从缓存中取出。

    除此之外还有一种办法,巧妙利用页面栈。

    getCurrentPages() 函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。

    重点就在这里,在当前页面拿到上一个页面的实例对象,然后调用该对象的方法完成数据传递。

    页面A

    Page({
    	 data: {
    		name: ''
    	 },
    	 ...
    	 ,
    	 //更新name
    	 changeData: function(name){
    		this.setData({
    			name: name
    		})
    	 }
    })
    

    页面B,假设有一个文本框用于输入姓名,点击返回按钮后更新页面A的name

    Page({
    	//此方法用于文本框输入回调
    	inputTyping: function (e) {
    		//获取页面栈
    		var pages = getCurrentPages();
    		if(pages.length > 1){
    			//上一个页面实例对象
    			var prePage = pages[pages.length - 2];
    			//关键在这里
    			prePage.changeData(e.detail.value)
    		}
        }
    })
    

    这样就可以实现数据传递给上一个页面,要注意页面A必须使用wx.navigateTo跳转到页面B,不能使用wx.redirectTo,这样会关闭上一个页面,导致页面B无法获取上一页Page实例。

    你也可以关注我的微信公众号『ITNotes』, 一起交流学习 。

  • 相关阅读:
    sqlalchemy 查询姿势总结
    sqlalchemy 常用总结
    rsyslog 移植与配置方案介绍
    软件设计随想录
    C语言面对对象设计模式汇编
    关于linux kernel slab内存管理的一点思考
    linux PMBus总线及设备驱动分析
    Linux x86_64 APIC中断路由机制分析
    单板控制领域模型设计与实现
    Linux mips64r2 PCI中断路由机制分析
  • 原文地址:https://www.cnblogs.com/nosqlcoco/p/6269094.html
Copyright © 2011-2022 走看看