这一篇文章讲述的是小程序基础,小白可以看过来。在开发小程序会用到uni.navigateBack或者wx.navigateBack回退到上一页面,但是这个路由方法怎么实现传值呢?这里讲到实现的方法,大家感兴趣的可以看看。功能介绍:这是我在公司写小程序做到的一个功能,比如在A页面有一个卡片让我们跳转到B页面去选择数据再回退A页面可以看到自己所选择的数据,这不是什么难点,只能记录实现功能代码。实现方法:思路:在回退页面的回调方法调用getCurrentPages函数,然后通过获取页面栈的方法去变更上一页面的数据。这个getCurrentPages函数实现的方法有两种,一种是直接去改变原来页面(A页
如果觉着主图好看,点个赞,你早晚也会看到这么好看的景色!第一种方式getCurrentPages获取当前页面栈。数组中第一个元素为首页,最后一个元素为当前页面。不要尝试修改页面栈,会导致路由以及页面状态错误。不要在App.onLaunch的时候调用getCurrentPages(),此时page还没有生成。代码举例constpages=getCurrentPages();//当前页的数据,constprevPage=pages[pages.length-
返回到非TabBar页面在点击某个按钮或执行某个条件时触发,示例代码:wx.navigateBack({delta:1//返回上一个界面,如果要返回多个界面,可以增加delta的值});在这个示例中,delta参数指定了要返回的界面数。如果你只想返回上一个界面,可以将delta设置为1。如果你想返回更多的界面,可以增加delta的值。返回到TabBar页面在小程序中,tabBar页面的返回操作与非tabBar页面有所不同。通常,tabBar页面是作为小程序的主要页面存在,而非tabBar页面是通过wx.navigateTo或wx.redirectTo方法跳转到的子页面。在tabBar页面中,可
页A通过wx.navigateTo跳转到页B,页Bwx.navigateBack返回页A前,可以通过利用getCurrentPages去传递参数,来刷新页A的值 letpages=getCurrentPages();//获取当前页面pages里的所有信息。 letprevPage=pages[pages.length-2];//prevPage是获取上一个页面的js里面的pages的所有信息。-2是上一个页面,-3是上上个页面以此类推。var showmeals = prevPage.data.showmeals;//页A的值var showindex = that.data.showinde
调试小程序的时候,从主页跳转到了另一个页面,在另一个页面的bindtap事件绑定的函数中,调用了wx.navigateBack()函数,但是却没有跳回上一个页面,而是报了一个错误:看字面意思也很简单,说的是现在这个页面已经是第一个页面了,没办法再返回了。这个错误原因其实也简单,就是在跳转的时候使用了wx.redirectTo(),使用wx.redirectTo()相当于重定向,不算是从上一个页面跳转过来的,所以把跳转后的页面当做了第一个页面。解决方案就是把wx.redirectTo()换成wx.navigationTo()。这样跳转之后,点击返回就可以成功返回上一页了。
A页面:执行方法fn,跳转到B页面 跳转方法采用wx.navigateTo,跳转到新的页面,保留当前页面fn:function(e){wx.navigateTo({url:'/pages/test/test',})},B页面(路径为pages/test/test的页面):①在某一方法中执行返回操作wx.navigateBack({ delta:1})②刷新上一个页面prevPage.onLoad();③调用上一个页面的设置值得方法 prevPage.setData({ iconStatu:false });varpages=getCurrentPages();//获取页面
尝试了众多方法,比如vuex,本地缓存,都不行1,如果是页面之间的跳转可以使用onShow生命周期请求数据2,组件之间的跳转,使用redirectTo,通过关闭当前页面,跳转到指定页面再加载,这种适合二级页面到三级页面数据不更新问题3,当一级页面使用了某个组件,组件内跳转二级页面,返回也不会刷新数据可以使用uni.emit和uni.emit和uni.emit和uni.on进行调用,触发的钩子需要放在mounted生命周期里,组件内的onShow不会生效这里的on放在父组件,也就是请求数据的那个页面或者组件里,on放在父组件,也就是请求数据的那个页面或者组件里,on放在父组件,也就是请求数据的那
需求从A页面跳到B页面,B页面执行完所有步骤后返回A页面并调用A页面的方法实现方法主要用到wx.navigateBack和wx.navigateTo两个路由跳转方法,从A跳向B需要使用wx.navigateTo(千万不能使用wx.redirectTo,这个跳转后页面就会销毁,无法通过wx.navigateBack返回)参考文档小程序官方对路由的介绍在这:点这里具体代码A页面的js文件//跳转事件jumPageb(){ wx.navigateTo({url:`这里填B页面路径`, });}//从B页面返回时调用的方法callBack(data){ console.log(data)//data为
由于小程序跳转限制10层,为了尽可能的减少页面栈,在小程序中会用到uni.navigateBack()方法,使用中难免会遇到页面跳转之间传参的问题。uni.navigateBack和uni.navigateTo、uni.redirectTo方式不同,不能通过路由拼接的方式传参,以下是三种跳转的方法:在小程序中uni.navigateTo和uni.redirectTo是通过路由拼接的方式传参uni.navigateTo({ url:'test?id=1&name=uniapp'});uni.redirectTo({ url:'test?id=1'});uni.navigateBack通过delt
返回上一个打开的页面并传递一个参数。有种办法就是使用假如从B页面返回A页面:varpages=getCurrentPages();varprevPage=pages[pages.length-2];//上一个页面prevPage.setData({mdata:1})经过测试,在uni.app中使用B页面使用setData设置A页面参数无法实现(应该是被更改为常量属性了)。打印console.log(prevPage)前一页面对象可得:方法1:我们可以使用A页面原有方法B页面传递:varobject={sx1:"参数1",sx2:"参数2",}prevPage.onShow(object);un