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

  实施方法
 
  通过预加载提前加载详情页;
 
  mui.fire触发详情页面指定事件,调用ajax更新数据;
 
  一、预加载的实现(两种方法):
 
  官方地址
 
  预加载方法一:
 
  通过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方法预加载。
 
  varpage=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(){/**
 
  *实例化获取接口数据方法
 
  */
 
  varget_bid_detail=newGET_BID_DETAIL();window.addEventListener('account_bid_detail_fire',function(event){//获得事件参数
 
  varid=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事件
 
  vardetail_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






 

Copyright Liukaiweb.Com Rights Reserved.

 渝ICP备2021008408号-5