现在页面A B C ,C是B的子页面,
在A中预加载B,B中创建C并append
首次进入A页面,show出B页面,一切都很正常,使用mui.back()隐藏B,再show出B 也是一切正常,但是一路返回直到关闭A,再进入A页面,show出B,此时C却从B页面中消失了。
代码如下:
A页面
mui.plusReady(function(){
var self = plus.webview.currentWebview();
var preSelectPage = mui.preload({
url: 'B.html',
id:'B.html'
});
mui('#task').on('tap','.mui-table-view-cell',function(){
preSelectPage.show();
});
});
B页面
mui.plusReady(function(){
//创建子页面,默认显示第一个选项卡数据
var self = plus.webview.currentWebview();
contentWebview = plus.webview.create('C.html','C.html');
self.append(contentWebview);
});
问题:
1、在B页面使用mui.back(),理论上是隐藏B的,为何第二次进来子页面C却消失了?
2、是不是父子页下使用mui.back()时,会把父页面与子页面 分别进行关闭处理了?也就是B hide,C close了?
现想到的解决方案:
1、将B和C都采用预加载方式,不知会不会出现同样问题,还有此时C是不是得在preload完成后才能append,因为我不知道什么时间才能preload完。
2、还是按照目前B预加载,C子页面创建append,但需要对show进行监听,每一次show都重新append?
已经试过将B C都采用预加载方式,结果还是一样 C 从B 中消失了, 第二次打开A show 出B 在B中 plus.webview.currentWebview().children().length 为 0
4 个回复
郑先生
额 我今天也问了跟你这个一样的问题 ,才看到你的问题 。 原因我也不清楚,不过我把A页面也预加载了就没问题了,还得待别人来解释一下
郑先生
http://ask.dcloud.net.cn/question/17618
hylong
代码逻辑是A预加载B,B预加载子页面C?这样写确实有问题,可以在A页面预加载B和子页面C。代码如下
hylong
这种方式也可以,已确认为产品bug,最新Github代码已修复该问题。