最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

如何优化mui列表跳转到详情页

来源:动视网 责编:小采 时间:2020-11-27 15:25:49
文档

如何优化mui列表跳转到详情页

如何优化mui列表跳转到详情页:因为列表页到详情页是多对一的形式,即列表页的多条数据列表对应的是一个详情页,只是数据不同而;因此,可以在加载列表页时预加载详情页,即创建一个详情页的webview,但是不显示出来,点击列表的时候在通过特定方法触发详情页的事件,获取响应数据,这种做法
推荐度:
导读如何优化mui列表跳转到详情页:因为列表页到详情页是多对一的形式,即列表页的多条数据列表对应的是一个详情页,只是数据不同而;因此,可以在加载列表页时预加载详情页,即创建一个详情页的webview,但是不显示出来,点击列表的时候在通过特定方法触发详情页的事件,获取响应数据,这种做法


一、预加载的实现(两种方法):

官方地址

预加载方法一:

通过mui.init方法中的preloadPages参数进行配置。

mui.init({
 preloadPages:[
 {
 url:prelaod-page-url, id:preload-page-id,
 styles:{},//窗口参数
 extras:{},//自定义扩展参数
 subpages:[{},{}]//预加载页面的子页面
 }
 ],
 preloadLimit:5//预加载窗口数量限制(一旦超出,先进先出)默认不限制});

在使用中,可能用不到那么多的属性,下面是我的使用案例:

mui.init({ preloadPages: [{
 url: 'account_detail.html',
 id: 'account_detail.html'
 }]
});

只需要设置url和id就可以,详情页需要的参数在使用mui.fire的时候传过去;

预加载方法二:

通过mui.preload方法预加载。

var page = mui.preload({ url:new-page-url, id:new-page-id,//默认使用当前页面的url作为id
 styles:{},//窗口参数
 extras:{}//自定义扩展参数});
预加载两种方法对比:

1.方法一为异步创建预加载页面,并且可以同时创建多个页面,但是由于是异步的,因此不能立即获取到创建的webview对象,并且需要使用plus.webview.getWebviewById来获取到创建的webview;
2.方法二为同步创建预加载页面,可以在创建后同步获取到webview,即方法二的“page”变量;但是方法二只能同时创建一个预加载的页面;

二、通过mui.fire触发自定义事件

原理:两个同时存在的webview之间可以通过mui.fire方法来触发另一个webview中的自定义事件,因此,我们可以在详情页中创建一个自定义事件,监听列表页中的mui.fire方法。
mui.fire( target , event , data )
target:详情页(列表页中预加载的详情页)的webview;
event:详情页中监听的自定义事件;
data:需要传给详情页的参数;

1.在详情页创建并监听自定义事件“account_bid_detail_fire”:

$.plusReady(function() { /**
 * 实例化获取接口数据方法
 */
 var get_bid_detail = new GET_BID_DETAIL(); window.addEventListener('account_bid_detail_fire', function(event) { //获得事件参数
 var id = event.detail.id; console.log(JSON.stringify(event.detail)); //触发ajax,根据id向服务器请求当前列表详情
 get_bid_detail.init(id);
 });
 });

mui.fire从列表页传的参数都在event.detail中,可以输出具体查看;

2.在列表页触发“account_bid_detail_fire”事件:

mui(document.body).on("tap", ".account_bid_list", function() {//触发详情页面的account_bid_detail_fire事件
 var detail_webview = null; if(!detail_webview) { //判断webview是否存在
 detail_webview = plus.webview.getWebviewById("account_detail.html");
 } //detail_webview是在列表页中预加载的页面;
 mui.fire(detail_webview, 'account_bid_detail_fire', { id: _this.dataset.id
 }); //打开详情页面 
 mui.openWindow({ id: "account_detail.html",//详情页webview的id
 show: { aniShow: 'none', //页面不显示动画
 duration: '0' //
 }
 });
});

接下来,在列表页点击列表的时候就可触发详情页的“account_bid_detail_fire”事件,然后触发详情页的ajax来更新请求的数据;

文末福利:

福利一:前端,Java,产品经理,微信小程序,Python等资源合集大放送:https://www.jianshu.com/p/e8197d4d9880
福利二:微信小程序入门与实战全套详细视频教程:https://www.jianshu.com/p/e8197d4d9880

相关推荐:

比较总结mui页面跳转方式之间的差异

MUI实现上拉加载和下拉刷新的实例分享

mui js返回刷新页面的方法实例代码

文档

如何优化mui列表跳转到详情页

如何优化mui列表跳转到详情页:因为列表页到详情页是多对一的形式,即列表页的多条数据列表对应的是一个详情页,只是数据不同而;因此,可以在加载列表页时预加载详情页,即创建一个详情页的webview,但是不显示出来,点击列表的时候在通过特定方法触发详情页的事件,获取响应数据,这种做法
推荐度:
标签: 如何 详情 详情页
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top