小程序返回上界面不刷新问题

现在假设我有个A界面,列表或者是其他的界面,从A界面点击跳转到B界面,然后在B界面操作后A界面应该发生变化,但是实际上我们点击返回的时候我们发现并没有刷新,这个时候我们应该通过界面栈来实现A界面的刷新,下面是重点:

1,首先,我们在A界面写一个函数,假如叫 changeData() ,注意这个函数并不是在onload里面,应该和onload是同级目录,代码块如下:

changeData: function (historyArr) {
let _this=this;
    this.loadList();
},
onLoad:function(){//................},

2,其次,我们应该在B界面中添加若干个获取界面栈的代码块,举个例子吧,

①,我想在B界面初始化的时候就让A界面实现刷新,这个时候我们可以在B界面的onload里面添加代码块,如果B界面onload里面请求了函数,我们可以在请求的函数的

success中调用代码块,具体代码块如下:解释已经说明

//获取页面栈
var pages = getCurrentPages();
if (pages.length > 1) {
    //上一个页面实例对象
    var prePage = pages[pages.length - 2];
    //关键在这里,这里面是触发上个界面
    prePage.changeData(prePage.data.historyArr)// 不同的人里面的值是不同的,这个数据是我的,具体的你们要根据自己的来查看所要传的参数
}
②,我想在界面B操作后界面A实现刷新,或者是界面的局部刷新,这个时候我们应该在B界面中的你想要的操做的函数执行完成后(具体的看情况)调用上面的代码块

3,想要试试行不行,建议打印看下吧,A界面的函数加打印的数据的话触发是在B界面触发的,这点需要注意,别把console控制台清了;


我们的原理就是通过界面栈获取上个界面,再获取到上个界面对应的函数,然后我们通过获取到上个界面的函数来触发上个界面的界面重新加载。

发布了75 篇原创文章 · 获赞 71 · 访问量 44万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章