(更多精彩内容请访问DCloud官网(http://www.dcloud.io/))
- 问题描述:
在XXX项目中,诊所列表页面预加载诊所详情页面,之后成功打开诊所详情页面;在诊所详情页面上,存在医生列表,业务需要在该页面上实现预加载医生详情页面。
最初在诊所详情页使用该方法:
(通过mui.init方法中的preloadPages参数进行配置)
<script type="text/javascript" charset="utf-8">
mui.init({
preloadPages: [{
id: 'doctorInfo.html',
url: 'doctorInfo.html'
}]
});
</script>
添加监听、实现跳转
var detailPage = null;
mui.plusReady(function(){
//跳转诊所详情页面
mui("#doctor").on('tap', '.data-con', function() {
if (!detailPage) {
detailPage = plus.webview.getWebviewById("doctorInfo.html");
//获取预加载webview对象
}
//获取医生id
var id = this.getAttribute("id");
var ids = id.split("&");
var doctorId = ids[0];
var clinicId = ids[1];
//传值给详情页面,通知加载新数据
mui.fire(detailPage, 'getDetail', {
doctorId: doctorId,
clinicId: clinicId
});
})
结果:无法实现创建。
(可通过 var array = plus.webview.all();查看所有被创建的webview)
2. 查看官方文档,使用提供的第二种方法解决此问题。
(通过mui.preload方法预加载)
//选择性位置去调用(init()中不要使用)
var detailPage = null;
detailPage = mui.preload({
url:"doctorInfo.html",
id:"doctorInfo.html"
//默认使用当前页面的url作为id
});
var doctorId = ids[0];
var clinicId = ids[1];
//传值给详情页面,通知加载新数据
mui.fire(detailPage, 'getDetail', {
doctorId: doctorId,
clinicId: clinicId
});