`

mui框架搭建app不同页面间传值的问题

 
阅读更多

        最近这个礼拜在捣鼓使用hbuilder+mui来实现移动app,然后有个功能需要用到页面间传值,然后官网是说根据不同的业务场景,有两种方式实现页面间传值,一种是通过在mui.openWindow()方法中使用extras参数来给详情页面传递参数,如下所示:

        传值页面代码如下:

        mui.openWindow({

              id:"xxx.html",

              url:"xxx.html",

              extras:{

                    property1:value1,

                    property2:value2

              },

        });

        目标页面通过如下所示方式获取到传过来的参数:

         var   self=plus.webview.getCurrentWebview();

         var  property1=self.property1;

        另外一种方式就是通过自定义事件来传递参数了,先在mui.init方法中预加载目标页面,然后通过mui.fire方法来触发自定义事件,再在目标页面监听自定义事件;但是在自己的实践过程中,发现在相应的代码中,一直报目标页面找不到的错误Uncaught Error: webview[newsList.html] does not exist at js/mui.min.js:6

       列表代码如下所示:

                      mui.init({

                             preloadPages:[

                                        {

                                             id:"newsList.html",

                                             url:"newsList.html"

                                         }

                               ]

                     });

                    var detailPage=null;

                    mui.plusReady(function(){

                             /*detailPage=mui.preload({

                                     //注,下面的代码能够使得使用自定义事件在两页面传值成功

                                     id:"newsList.html",  

                                     url:"newsList.html"

                            })*/

                     //添加列表点击事件

                     mui("#newsList").on("tap","a",function(event){

                               var id=this.getAttribute("id");

                               //获得详情页面

                               if(!detailPage){

                                        detailPage=plus.webview.getWebviewById("newsList.html");

                                //因为是在mui.init()方法中使用的预加载方式,所以下面代码会显示为null

                                        alert(detailPage);    

                               };

                               //下面的代码是触发详情页面的newsId事件,其中detailPage为目标页面,

                               //newsId为在目标页面自定义的事件名称eventName

                               //第三个参数为封装的需要传递给目标页面的参数对象

                               mui.fire(detailPage,'newsId',{

                                        id:id

                                });

                                //打开详情页面

                               mui.openWindow({

                                        id:"newsList.html",

                                        /*extras:{       //利用extras方法传递简单的参数至另外一个页面

                                             names:"1234"

                                        }*/

                                  })

                             })

                        });

             如上述代码所示,通过在mui.init()方法中预加载的方式的话,就会报找不到详情页面,

            后面通过查找资料,发现得使用另外一种预加载的方式,即:mui.preload()方法,而且该方法得放到mui.plusReady()里面,具体代码如下所示:

                        mui.init();

                        var detailPage=null;

                        mui.plusReady(function(){

                                   detailPage=mui.preload({

                                                id:"newsList.html",

                                                url:"newsList.html"

                                   })

                                  //添加列表点击事件

                                  mui("#newsList").on("tap","a",function(event){

                                            var id=this.getAttribute("id");

                                            //获得详情页面

                                            if(!detailPage){

                                                  detailPage=plus.webview.getWebviewById("newsList.html");

                                                  alert(detailPage);

                                            };

                                           mui.fire(detailPage,'newsId',{

                                                  id:id

                                           });

                                           //打开详情页面

                                           mui.openWindow({

                                                   id:"newsList.html",

          //注意:在使用自定义事件传递参数时,当目标页面已经预加载成功后,此时再如下代码所示使用

          //使用extras传递参数,那么在目标页面无法获取该参数。

                                                   /*extras:{       //利用extras方法传递简单的参数至另外一个页面

                                                          names:"1234"

                                                    }*/

                                           })

                                   })

                           });

       以上就是使用自定义事件传递参数时的代码示例(使用自定义事件传递参数时,如果是在mui.init()方法中预加载目标页面的话,会导致在给列表项添加点击事件时,目标页面(即所谓的详情页面)会不存在的情况),所以建议在mui.plusReady()方法中使用mui.preload()方式预加载详情页面

分享到:
评论

相关推荐

    Hbuilder MUI 页面刷新及页面传值问题

    ### HBuilder MUI 页面刷新及...综上所述,通过合理运用MUI框架提供的各种方法和特性,可以有效地解决页面刷新及页面间传值的问题。同时,利用`sessionStorage`来存储复杂数据类型,也可以方便地实现跨页面的数据共享。

    MUI手机app前端页面开发框架模板下载

    这款框架尤其适合快速开发手机应用的前端页面,提供了一套完整的开发模板,使得开发者能够快速搭建出具有原生应用体验的页面。 在提供的文件列表中,我们可以看到以下几个关键目录: 1. **fonts**:这个目录通常...

    mui开发的app例子,非常好资源,适合初学者

    1. Mui框架的基本结构和API使用,如页面路由、组件使用等。 2. 如何利用Mui构建混合App,包括HTML5、CSS3和JavaScript的使用。 3. 混合应用的开发流程,从项目初始化、界面设计、功能实现到打包发布。 4. 如何与设备...

    使用MUI框架构建App请求http接口实例代码

    MUI框架封装了android、ios等多个平台的原生接口,达到开发一个项目,采取不同打包方式,生产多种平台的app。这种方式可以大大缩短App开发的学习周期和成本,对于从事Java Web开发的工程师带来了极大的福音。 使用...

    mui开发的租房app

    1. UI组件设计:mui提供了多种预设的UI组件,如列表、按钮、表单等,可快速搭建租房App的基本界面。例如,房源列表可以采用mui的list组件,结合grid布局展示房源图片和信息;预约看房按钮可以使用button组件,设置...

    mui框架高性能App框架目前最接近原生App效果的框架

    性能和体验的差距,一直是mobile app开发者放弃HTML5的首要原因。 浏览器天生的切页白屏、不忍直视的转页...mui框架有效的解决了这些问题,这是一个可以方便开发出高性能App的框架,也是目前最接近原生App效果的框架。

    仿小米mui移动app页面

    【标题】"仿小米mui移动app页面"涉及的是移动端应用开发,主要使用了mui框架,这是一种基于HTML5技术的开源框架,旨在简化移动应用的开发流程。小米mui(Mobile UI)设计灵感来源于小米MIUI系统,它提供了丰富的组件...

    MUI实现微信App开发.rar

    《使用MUI框架开发微信App的全面指南》 在当今移动互联网时代,微信App开发已经成为开发者们的热门选择,尤其对于想要实现跨平台兼容性的开发者来说,MUI框架提供了一个高效且便捷的解决方案。MUI是DCloud(数字...

    html5、移动端、mui+app尺寸适配、屏幕适配、屏幕自适应插件,解决不同手机尺寸的手机适配问题

    html5+app、移动端、mui+app尺寸适配、屏幕适配、屏幕自适应插件,解决不同手机尺寸的手机适配问题

    基于mui移动微商城APP模板.zip

    本篇将详细介绍基于mui框架的移动微商城APP模板,以及如何利用这个模板快速构建一个功能完备的移动端商城应用。 首先,我们要了解什么是mui框架。mui(Mobile UI)是阿里巴巴开源的一款轻量级的前端开发框架,主要...

    mui框架手机网页开发,包含登录、注册

    MUI框架内置了适应不同屏幕尺寸的机制,能较好地处理屏幕适配问题。 六、优化与性能提升 为了提高用户体验,可以优化页面加载速度,如使用延迟加载、代码分割等技术。同时,注意减少HTTP请求,优化图片资源,以提升...

    MUI 漫画APP.zip

    《MUI 漫画APP》是一款基于MUI框架开发的简单漫画阅读应用程序。MUI是DCloud(数字天堂)推出的一款轻量级的前端框架,专为移动Web应用设计,旨在提供一套易于上手、功能完备且性能优化的组件库,帮助开发者快速构建...

    MUI之父页面刷新

    MUI提供了事件广播机制,可以用于父子页面间的通信。 4. **API调用**:MUI框架提供了一些API,例如`mui.back()`用于返回上一页,`mui.openWindow()`用于打开新页面。在父页面刷新时,可能需要利用这些API来控制页面...

    MUI框架开发HTML5

    - **混合App开发**:MUI也可以与Hybrid框架(如Apache Cordova)结合,用于开发跨平台的混合移动应用。 - **企业级项目**:对于需要快速构建复杂功能的企业级项目,MUI可以作为前端开发的标准工具库,帮助团队提升...

    Android本地APP集成Mui框架

    "Android本地APP集成Mui框架"就是一个关于如何将Mui框架整合到Android应用中的实践教程。Mui框架是一个轻量级的前端框架,它允许开发者快速构建响应式、移动优先的用户界面,尤其适用于混合开发或跨平台应用。 Mui...

    2018mui教程 mui实战视频教程 web移动端开发教程+源码

    16【微信子页面】页面间传值 17【相册】Html5访问手机相册,发送单张图片 18【相册】Html5访问手机相册,发送多张图片 19【摄像头】Html5访问手机摄像头,发送拍摄照片 20【摇一摇】获取重力感应 21【摇一摇】...

    mui单页面应用框架(含demo)

    MUI框架支持单页面应用开发,使得开发者可以轻松实现页面间的平滑过渡。 **3. 页面路由管理** 在MUI中实现页面路由,通常会结合MUI的Ajax组件和History API。通过监听hashchange事件或者使用History.pushState/...

    HTML5开发APP-框架MUI(仿支付宝案例)

    9. **兼容性和测试**:虽然MUI致力于提供跨平台兼容性,但在实际开发中,仍需对不同浏览器和设备进行广泛的测试,确保在各种环境下都能正常运行。 综上所述,HTML5开发APP结合MUI框架仿支付宝案例,不仅涉及前端UI...

    MUI框架--页面init事件

    本节我们将深入探讨MUI框架中的“init”事件,以及如何在页面初始化阶段使用它。 一、MUI框架基础 MUI是DCloud公司推出的一款开源前端框架,其设计理念是提供接近原生APP的体验,支持多平台兼容,包括iOS和Android...

Global site tag (gtag.js) - Google Analytics