mor7on@qq.com
mor7on@qq.com
  • 发布:2019-01-17 13:50
  • 更新:2019-05-11 20:40
  • 阅读:3003

UNI-APP返回刷新的问题

分类:uni-app

A页面navigateTo到B页面,带参数
B页面在onload方法中获取A页面传递过来的参数,并根据获取来的参数从服务端拉数据,并展示,同时,B页面使用navigateTo到C页面并传递参数
C页面在onload方法中获取B页面传递过来的参数,C页面是一个表单,提交B页面传递过来的参数及表单元素到服务端,使用navigateBack方法返回B页面或者A页面,这时如何自动刷新B页面或者A页面??????

另外navigateBack如何带参数返回??B页面或者A页中又如何获取这些参数???

2019-01-17 13:50 分享
已邀请:
mor7on@qq.com

mor7on@qq.com (作者)

其实就是发布文章返回刷新的问题

mor7on@qq.com

mor7on@qq.com (作者)

如果采用redirectTo能够保证刷新,但是由于没有加入页面栈,点返回按钮的时候依然会有旧的页面显示,体验感就很不好了

mor7on@qq.com

mor7on@qq.com (作者)

我的思路是在OnShow方法中判断是否从C页面返回的,如果是,就重新从服务端拉数据,否则就显示原页面,但是,不会写....有没有人给个代码提示啊??

mor7on@qq.com

mor7on@qq.com (作者)

用一种方法实现了
在B页面设定一个页面状态isFromC = false;
在onShow方法中判断isFromC 是true还是false,如果是true,就将数据清空,重新从服务端拉数据
去C页面的时候将isFromC = true;

不知道这种方法算不算好方法,迷茫...
但是无法实现直接返回A页面的时候刷新A页面

其实,这种WebApp大多数时候返回都是要刷新的,建议官方给navigateBack接口增加一个参数,返回是否刷新,内置到API内部去

sunwork888

sunwork888

确实

admin@shuliangfu.com

admin@shuliangfu.com

我只知道用onfire.js可以实现

井

let pages = getCurrentPages()  
for (let i = pages.length - 1; i > -1; i--) {  
    let page = pages[i]  
    if (page.route == 'pages/address/addresses') {  
        page.onLoad({  
            ...page.options,  
            refresh: 1  
        })  
        uni.navigateBack({  
            delta: pages.length - i - 1,  
        })  
        break  
    }  
}  
844189873@qq.com

844189873@qq.com

经验证,用下的方式可行:

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

===========================

onShow:function(e){
       let pages = getCurrentPages();
       let currPage = pages[pages.length-1];
       if (currPage.data.isDoRefresh == true){
currPage.data.isDoRefresh = false;
            this.doRefresh();
        }else{
           //不用刷新
        }

 }

  • 530915474@qq.com

    可以具体表明一下分别在哪个页面吗 谢谢

    4 天前

要回复问题请先登录注册