Alohaaaaa
Alohaaaaa
  • 发布:2015-08-17 11:42
  • 更新:2015-08-17 13:51
  • 阅读:3153

关于父子页面传值的问题,急!求帮助。

分类:MUI

A页面有个按钮,点击打开B页面,B页面中有个子页面C。B和C都在A页面进行了预加载。B界面有个网络请求,现在怎么可以将请求返回的数据传给子页面C呢。我试过自定义事件好像并没有用。
这是A页面代码:

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

B页面代码:

mui.init({  
            subpages: [{  
                    id: 'C.html',  
                    url: 'C.html',  
                    styles: {  
                        top: '83px',  
                        bottom: 0,  
                        bounce: 'vertical'  
                    }  
                }]  
         });

C页面就是一个简单的tableview列表。B界面有个网络请求,返回的数据需要穿到子页面C并在C页面展示,现在就是值传不过去。有点炸啊!

2015-08-17 11:42 负责人:无 分享
已邀请:
00飞00

00飞00 - 全栈 云原生

你在A页面已经预加载了C页面,B页面就没必要在用子页面了。
或者你A预加载B,B子页面C。

传值的话,用自定义事件:
在B页面,点击按钮,调用网络请求,获取数据。
接着,触发C页面的自定义事件,同时把你要传的值传过去

B页面:

function B(){
var data = 'XXXXXXX';

var webViewC = plus.webview.getWebviewById('C'); //C是预加载或是子页面时 C的id
mui.fire(webViewC ,'transData',{ //transData 是C页面自定义事件的名称
tableview:data
});

}

C页面:

mui.plusReady(function(){

// transData是自定义事件的名称,由其他页面通过 mui.fire 触发
// transDataHandler 是处理自定义事件的函数名称 ,名字自己随便写
window.addEventListener('transData',transDataHandler) ;
})

//自定义事件处理逻辑 event参数不能少
function transDataHandler(event){

//获取从B页面传过来的数据
var tableview = event.detail.tableview ;

//这里给C页面上需要赋值的 赋值

//赋值结束后,让页面显示出来
var webviewC = plus.webview.getWebviewById('C');
plus.webview.show(webviewC ,'zoom-in',300); //zoom-in 动画显示方式,可以在5+ API查到 有多个

}

如果还是不明白,可以去看下 滴石 这个APP,在案例那里有

  • Alohaaaaa (作者)

    明白了!谢谢!

    2015-08-18 15:27

BoredApe

BoredApe - 有问题就会有答案。

你的自定义事件是怎么写的

  • Alohaaaaa (作者)

    B页面:

    mui.fire('C.html','bookId',{

    id:bookId

    });


    C页面:

    window.addEventListener('bookId',function(event){

    //获得事件参数

    lendBookId = event.detail.id;

    console.log(lendBookId)

    });

    2015-08-18 15:24

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