当前位置:首页 / 网页制作 / HTML/Xhtml教程 / mui列表跳转到详情页方法介绍
mui列表跳转到详情页方法介绍
芯晴素材特效 分类:HTML/Xhtml教程 发布日期:2018-04-11

因为列表页到详情页是多对一的形式,即列表页的多条数据列表对应的是一个详情页,只是数据不同而;因此,可以在加载列表页时预加载详情页,即创建一个详情页的webview,但是不显示出来,点击列表的时候在通过特定方法触发详情页的事件,获取响应数据,这种做法可以极大程度的缩短响应的时间。

实施方法

通过预加载提前加载详情页;

mui.fire 触发详情页面指定事件,调用ajax更新数据;

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

官方地址

预加载方法一:

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

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

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

1
2
3
4
5
mui.init({    preloadPages: [{
        url: 'account_detail.html',
        id: 'account_detail.html'
    }]
});

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

预加载方法二:

通过mui.preload方法预加载。

1
2
3
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”:

1
2
3
4
5
6
7
8
$.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”事件:

1
2
3
4
5
6
7
8
9
10
11
12
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

版权信息:本站所有资源仅供学习与参考,请勿用于商业用途,如有侵犯您的版权,请及时联系821794221#qq.com(#换@),我们将尽快处理。

  • 内容标签:

热门素材

css3模拟雷达波向外散发动画效果

2017-03-09   浏览:465

jQuery点击弹出确认或取消删除特效

2017-03-13   浏览:426

用层模拟可移动/可隐藏的小窗口

2013-01-09   浏览:8284

固定在页面左侧的导航菜单

2013-01-06   浏览:9529

多彩背景色左右滑动导航

2017-02-26   浏览:220

jQuery视差插件ImageScroll

2017-03-17   浏览:184

Ajax选项卡、隔行换色、弹出遮罩层

2013-01-09   浏览:8397

腾讯科技热点推荐图片展示效果

2017-03-12   浏览:473

一款简洁的TAB滑动门修改

2013-01-16   浏览:8426

jQuery+CSS实现图片感应鼠标高亮显示当

2013-01-18   浏览:8666

HTML5 Canvas点击页面烟花绽放特效

2017-03-22   浏览:297

WIN 8效果左右全屏滚动幻灯片

2017-02-28   浏览:116