2784关注8798浏览
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;
-
至过去的我
2044人对此回答表示赞同
我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多> -
clock8
12人对此回答表示赞同
用全局方式传值呀,app.key=1
展开120回复分享发布于 6年前评论(0)
收起评论
-
左鹏
10人对此回答表示赞同
在c可以用getCurrentPages获取到b,直接将b某个值改变
展开101回复分享发布于 6年前评论(1)
收起评论
-
雪先生 2019-02-17 18:39
貌似官网,不推荐修改值栈中的数据
回复
-
-
Jameson
10人对此回答表示赞同
在B页面的onShow中请求数据不就可以吗,为什么这么麻烦?
展开100回复分享发布于 6年前评论(0)
收起评论
-
裸奔的花生
6人对此回答表示赞同
我现在是这么实现的:
展开615回复分享发布于 6年前评论(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里判断这个值再确定是否请求数据
展开50回复分享发布于 6年前评论(0)
收起评论
