DCloud_UNI_CHB
DCloud_UNI_CHB
  • 发布:2014-09-23 14:42
  • 更新:2019-07-12 12:20
  • 阅读:286719

mui框架如何实现页面间传值

分类:MUI

在App开发中,页面间传值是很常见的开发需求,mui框架根据业务场景不同,提供了两种传值模式。
1、页面初始化时,通过扩展参数传值;
mui在初始化页面时,提供了extras配置参数,通过该参数可以设置页面参数,从而实现页面间传值;
mui框架在如下几种场景下,会执行页面初始化操作:

  • 通过mui.openWindow()打开新页面(若目标页面为已预加载成功的页面,则在openWindow方法中传递的extras参数无效);
  • 通过mui.init()方法创建子页面;
  • 通过mui.init()方法预加载页面;
  • 通过mui.preload()方法预加载页面

示例,假设我们有如下需求:
在首页中打开关于页面时,传递当前产品名称及版本号,然后在关于页面中读取这两个参数并显示出来;

首页实现代码:

mui.openWindow({  
    url:'info.html',  
    id:'info.html',  
    extras:{  
        name:'mui',  
        version:'0.5.8'  
    }  
});

关于页面实现代码:

var self = plus.webview.currentWebview();  
var name = self.name;  
var version = self.version;

2、页面已创建,通过自定义事件传值
参考mui官网中自定义事件的介绍

45 关注 分享
小小雨 damdmen Mr丶Leo wang_ Ayumi 互帮互助 憨憨的爱 choujjss flax 薇妮儿的阳光雨 Esong shfnooy tolerious WaKing imengxin 小小时光 chen214123158 肥陈 星辰和星空 王大大 Eric_ou roller 5***@qq.com HCloud 老醒 4***@qq.com Trust 绝云气 清风脱然至 husheng 2***@qq.com 9***@qq.com gaohuazi jtshushu a***@163.com 雪之梦技术驿站 9***@qq.com 辰欤小迟 Warn 1***@qq.com 陈沐沐 1***@qq.com 3***@qq.com 5***@qq.com 2***@qq.com

要回复文章请先登录注册

qq421065846

qq421065846

从七月中旬开始做混合app,到8月中下旬app上线。已经完成了一个简单的app并且在腾讯和苹果appstore上线了,这期间遇到过无数的坑,主要是熟悉和使用mui框架,h5+,以及调用原生api等,入坑已深,现在正准备开发一款旅游类的混合app,原型图已经出。现在准备开工了。同时,希望有一起做混合app的,有兴趣加qq群654230427一起讨论交流学习,爬坑,共同进步。
2017-09-11 22:27
l***@sina.com

l***@sina.com

我已经放弃用MUI的方法了,改用在跳转的链接后加参数

父页面在跳转时链接带上参数
url:"selfHelpDetail.html?"+detailID

子页面获取参数
var href = location.href;
var detailID = href.split("?")[1];

感觉这个方法也不是很好,但是起码可以解决问题
2017-07-13 11:21
ddse

ddse

回复 等烟雨 :
请问解决了么。我也是遇到这个问题
2017-06-04 14:12
xkm_mxp

xkm_mxp

回复 9***@qq.com :
你解决了么,是怎么解决的
2017-05-02 15:19
xkm_mxp

xkm_mxp

A页面:
mui.openWindow({
url: 'B.html',
id:'B.html',
extras:{
bicycleId:resIdArr[1]
}
});
跳转B页面:
mui.plusReady(function(){
var self = plus.webview.currentWebview();
bicyleId = self.bicyleId;
});
代码和你的一模一样呀,为什么bicyleId 还是没有值?
2017-05-02 15:17
满哥儿

满哥儿

既然大家都遇到问题,就不能写个完整的代码看看?文档的很多地方都是说一半留一半,对于新手都要靠猜测。
2017-03-23 18:47
a***@163.com

a***@163.com

正好用到,不错!!!!
2017-03-21 22:37
9***@qq.com

9***@qq.com

oLogin1.addEventListener('tap',function(){
mui.openWindow({
url:'renewals.html',
id:'renewals',
extras:{
//设备号

deviceId:'detail'
}
});
})
在另一个页面获取值显示为Undefined;为什么呀?
mui.plusReady(function(){
//获取当前窗体对象
var self=plus.webview.currentWebview();
//接受上一页面传过来的值;
var received=self.deviceId;
console.log('接收到值'+received);
});
2017-01-04 17:42
草原狼

草原狼

我在进行传参的时候,如果是 prepare(异步) 的话,在进行fire 传参数时候,因为 那个 新窗口 plusReady 的 addEventListener 没有初始化,没有传参成功。 用preload(同步),因为窗口过多,估计有10+左右,然后就提示webview过多,出现闪退。有办法解决么?
2016-12-19 11:12
大头木木

大头木木

Uncaught TypeError: b.evalJS is not a function at js/mui.min.js:6
报这个错是为什么啊
2016-12-16 10:03