小程序如何返回刷新

1216关注3783浏览

A页面 点击navigateTo 跳转到B页面


B页面调用了一个列表组件(使用component编写的),点击组件中的每一项回跳转到C页面


C页面执行完成后,返回B页面,(使用navigateBack进行返回),返回后,点击B页面左上角的回退按钮


发现,得点击2次,才能返回到A页面。


我在C页面做了一些数据更改的操作,操作完成后,我希望回退到B页面,B页面能自己重新刷新一下,这样才能看到我刚才的更改。但是,B页面其实是个组件模版页面。我在onshow里面,没法重新调用数据请求,因为数据都是分装在组件模版页中的,我不知道该怎么办呢?谁能帮帮我。

B页面:

wxml:

<listTag key-word="{{keyword}}" search-type="{{searchType}}" user-account="{{userInfo.userAccount}}" res-key="{{resKey}}"></listTag>

json:

{

"usingComponents": {

"listTag": "/components/list/listTag"

},

"navigationBarTitleText": ""

}

js:

// pages/crm/myCreatedAll.js

var app = getApp();

Page({


/**

  * 页面的初始数据

  */

data: {

searchType:'',

resKey:'crmWorkRecord',

userInfo: {},

wmStyle:'',

count:0

},

/**

  * 生命周期函数--监听页面加载

  */

onLoad: function (options) {

console.log("--11111-----");

//NO.1 获取已注册用户的微信信息

this._getUserInfo();

//NO.2 根据获取到的信息判断用户是否登录

let isRelogin = this._isReLogin();

if (isRelogin) {

return;

}

let title="";

switch (options.searchType){

case "registerAll":

title ="我登记的全部工作记录";

break;

case "registerChecking":

title ='我登记的批示中的工作记录';

break;

case "registerChecked":

title = '我登记的批示完成的工作记录';

break;

case "checkAll":

title = '我审核的全部工作记录';

break;

case "checking":

title = '待我审核的工作记录';

break;

case 'checked':

title = "我审核过的工作记录";

break;

default:

title="根据编号、主题、客户搜索"

}


wx.setNavigationBarTitle({

title: title

})

this.setData({

searchType: options.searchType,

keyword:options.keyword?options.keyword:""

});

},

_getUserInfo: function () {//获取登录权限

let that = this;

if (app.globalData.userInfo) {

this.setData({

userInfo: app.globalData.userInfo

})

} else {

app.getUserInfo(function (userInfo) {

that.setData({//更新数据

userInfo: userInfo

});

});

}

},

_isReLogin: function () {//是否需要重新登录

var account = this.data.userInfo.userAccount;

if (!account) {

app.alertMsg("无法识别当前登录用户,请重新登录", function () {

wx.redirectTo({

url: '/pages/login/index',

})

});

return true;

展开全部
收起
5回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • clock8

    12人对此回答表示赞同

    用全局方式传值呀,app.key=1

    展开
    12
    0回复
    发布于 1个月前

    评论(0)

    收起评论

  • 左鹏

    10人对此回答表示赞同

    在c可以用getCurrentPages获取到b,直接将b某个值改变

    展开
    10
    1回复
    发布于 1个月前

    评论(1)

    收起评论

    • 雪先生 2019-02-17 18:39

      貌似官网,不推荐修改值栈中的数据

      回复
  • Jameson

    10人对此回答表示赞同

    在B页面的onShow中请求数据不就可以吗,为什么这么麻烦?

    展开
    10
    0回复
    发布于 1个月前

    评论(0)

    收起评论

  • 裸奔的花生

    6人对此回答表示赞同

    我现在是这么实现的:

    展开
    6
    15回复
    发布于 1个月前

    评论(15)

    收起评论

    • 纸短情长 2019-02-18 22:17

      好的,谢谢

      回复
    • 诺澜 2019-02-20 15:20

      测试体验版本得打开debug模式,正式版本没事

      回复
    • 酥油茶 2019-02-22 19:09

      wx.request请求,在开发者工具中能够正常请求数据,在手机上不用debug模式就直接进到fail中,这个问题你遇到过吗

      回复
    • MULAN 2019-02-24 21:16

      ...............

      回复
    • 喜马拉雅先生 2019-02-26 21:27

      没啊,不知道该怎么搞

      回复
    • 左鹏 2019-02-28 19:12

      主跑啦,,我也遇到这个问题啦,请问你解决啦没

      回复
    • 在劫难逃 2019-03-02 19:30

      主,我的问题和你的类似,我从A页面通过navigateTo跳到B页面,B页面通过navigateTo跳转到C页面,我在C页面进行了数据更新操作,更新完成后,通过redirectTo跳转到B页面.这是我想返回A页面就需要点击回退按钮两次,请问你你是怎么解决这个问题的

      回复
    • Danny 2019-03-05 00:33

      貌似不是方法没执行完导致的,好像是组件自己再不停的重复的调用了。我加了这个flag也不起作用,方法开始时loadFlag=true执行完成后更改为false,程序一直实在true--false的更改中循环调用N次了

      回复
    • Jayden1 2019-03-06 23:58

      你可以在发起请求前标识一个状态loadFlag=true,在完成的时候loadFlag=false。如果再进到这个请求方法,判断是否标识正在加载数据。如果loadFlag=true就return掉,不执行请求。

      回复
    • Elijah 2019-03-08 16:14

      我还有个问题,想要咨询您一下。我也是纠结了很久。我使用scroll-view实现下拉加载更多。

      回复
    • 周文轩 2019-03-10 19:03

      参考你的方式,我实现了

      回复
    • Wyatt 2019-03-12 23:39

      代码片段wechatide://minicode/DyTLXkmS7pXg

      回复
    • 周文轩 2019-03-14 23:16

      传递的current是个网络连接形式的图片,我打日志然后,拷贝到放在浏览器里面显示就是正常的图片。但是,放到小程序中,却一直显示第一张

      回复
    • 大勇 2019-03-16 18:50

      非常感谢,按照您的方式,最后实现了刷新。我还有个问题想要请教您一下,就是小程序的图片预览接口。

      回复
    • 赵凯歌 2019-03-18 15:30

      还是按我刚才说的两种,写了个代码片段你看看wechatide://minicode/6lLGwjmX7hw5

      回复
    加载更多
  • 一见倾心

    5人对此回答表示赞同

    刷新数据放onshow里就可以了。如果非回退不刷新的话,可以在回退前set一个值到globalData或者缓存里,在会退后页面onshow里判断这个值再确定是否请求数据

    展开
    5
    0回复
    发布于 1个月前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z