等烟雨
等烟雨
  • 发布:2015-02-06 09:45
  • 更新:2015-04-26 08:36
  • 阅读:2889

自定义事件传值问题

分类:MUI
mui

一个主页面index.html预加载一个子页面List_test.html并传值,这个子页面再预加载一个子页面Content_001.html并传值,index.html跳转到List_test.html没有问题,List_test.html跳转到Content_001,html页面就出问题了,好像值没有传过来,而且也没有执行Content_001.html页面的任何东西
index主要代码如下:


var listPage = mui.preload({  
                    url:'List_test.html',  
                    id:'List_test.html'//默认使用当前页面的url作为id  
                });  

                //添加a标签的tap事件  
                $.plusReady(function() {  
                    plus.navigator.closeSplashscreen();  
                    mui('#backGround').on('tap', 'a', function(e) {  
                        var uid;  
                        var id;  
                        var type;  
                        var strId = this.getAttribute('id');  
                        var strHref = this.getAttribute('href');  
                        console.log(strId+" "+strHref);  
                        var strs= new Array(); //定义一数组   
                        strs=strId.split("_"); //字符分割   
                        for (i=0;i<strs.length ;i++ ){  
                            uid=strs[0];  
                            id=strs[1];  
                            type=strs[2];  
                        }  
                        //触发详情页面的getParam事件  
                        mui.fire(listPage,'getParam',{  
                            uid:uid,  
                            pid:id,  
                        });  

                        //打开详情页面            
                        mui.openWindow({  
                            id:strHref,  
                            url:this.href  
                        });  
                    });  
                });   

List_test页面主要代码如下:

var xhr=null;  
            var uid=null;//商家id  
            var pid=null;//栏目id  
            var curPage=1;//首先获取第一页的数据展现  
            var totalPage=null;  
            var requestUrl=null;  
            //预加载单页  

            var contentPage = mui.preload({  
                url:'Content_001.html',  
                id:'Content_001.html'//默认使用当前页面的url作为id  
            });  
            //添加a标签的tap事件  
            //添加列表项的点击事件   
            mui.plusReady(function() {  
                plus.navigator.closeSplashscreen();  
                mui('#contentList').on('tap', 'a', function(e) {  
                    var uid;//局部变量,传值用  
                    var pid;//局部变量,传值用  
                    var id;//局部变量,传值用  
                    var strId = this.getAttribute('id');  
                    var strHref = this.getAttribute('href');  
                    console.log(strId+" "+strHref);  
                    var strs= new Array(); //定义一数组   
                    strs=strId.split("_"); //字符分割   
                    for (i=0;i<strs.length ;i++ ){  
                        uid=strs[0];  
                        pid=strs[1];  
                        id=strs[2];  
                    }  
                    //触发详情页面的getParam事件  
                    mui.fire(contentPage,'getParam',{  
                        uid:uid,  
                        pid:pid,  
                        id:id  
                    });   
                    //打开详情页面            
                    mui.openWindow({  
                        id:strHref,  
                        url:this.href  
                    });  
                });  
            });
Content_001页面接收传值代码如下:  
window.addEventListener('getParam',function(event){  
                    //获得事件参数  
                    uid = event.detail.uid;  
                    pid = event.detail.pid;  
                    id = event.detail.id;  
                    type = event.detail.type;  
                    console.log(type);  

                });
2015-02-06 09:45 负责人:无 分享
已邀请:
DCloud_UNI_FXY

DCloud_UNI_FXY

content_001页面引入mui的js没有。使用fire事件必须两个页面都引用mui的js

等烟雨

等烟雨 (作者)

当然引入啦,这个问题算是解决了,我没有把接收参数的方法写在plusready的监听事件里

韩言风

韩言风

OK 看这个解决了父级传值问题

Rain

Rain

uid = event.detail.uid;

detail 指的是详情页面的 id 还是一个方法呀?

  • DCloud_UNI_FXY

    detail是mui给event添加的一个固定的属性来存储自定义事件的参数,你在自定义事件里传的参数,都在detail里边。

    2015-04-26 13:45

该问题目前已经被锁定, 无法添加新回复