案列是这样的:
想要通过点击列表,跳转到详细页面,同时将列表点击的ID值传值到详细页面,打印出来。
我根据官方文档的代码示例实现了列表跳转到详细页面,但是ID值在详细页面获取不到。不知道问题出在哪里。。
求解,谢谢!
1.列表 HTML 代码
<body>
<ul class="mui-table-view">
<li class="mui-table-view-cell" value="1">Item 1</li>
<li class="mui-table-view-cell" value="2">Item 2</li>
<li class="mui-table-view-cell" value="3">Item 3</li>
</ul>
</body>
列表JS代码
<script type="text/javascript" charset="utf-8">
//初始化预加载详情页面
mui.init({
preloadPages: [{
id: 'pageD',
url: 'detail.html'
}]
});
//添加列表项的点击事件
mui('.mui-table-view').on('tap', 'li', function(e) {
var value = this.getAttribute('value');
var detail = null;
mui.plusReady(function() {
detail = plus.webview.getWebviewById('pageD');
});
//传值给详情页面,通知加载新数据
mui.fire(detail, 'getDetail', {
id: value
});
//打开新闻详情
mui.openWindow({
id: 'detail',
url: 'detail.html'
});
});
</script>
2.详细页面JS代码
<script type="text/javascript" charset="utf-8">
mui.init();
mui.plusReady(function() {
//添加newId自定义事件监听
window.addEventListener('getDetail', function(event) {
//获得事件参数
var value = event.detail.id;
console.log("value:" + value)
});
})
</script>
页面能跳转,但是传过来的值取不到。。
7 个回复
王者地带 - 5+混合APP开发教程网 | http://www.html5-app.com | 咨询QQ: 2564034335
王者地带 - 5+混合APP开发教程网 | http://www.html5-app.com | 咨询QQ: 2564034335
//打开新闻详情
mui.openWindow({
id: 'detail',
url: 'detail.html'
});
这里错了, 应该是: mui.openWindow({id: 'pageD'});
//初始化预加载详情页面
mui.init({
preloadPages: [{
id: 'pageD',
url: 'detail.html'
}]
});
你已经预加载detail.html 页面了, 它的ID是pageD, 直接mui.openWindow({id: 'pageD'}); 打开该页面就可以了。
雪之梦技术驿站 - 你在互联网的路上匆匆而来,雪之梦技术驿站助你满载而去
mui.plusReady(function() {
detail = plus.webview.getWebviewById('pageD');
});
你获取详情页的方式不对
ArvinHe (作者)
大哥,按照你上面说的方式也拿不到值。~ ~!
2017-07-06 14:52
ArvinHe (作者)
我在mui.plusReady(function() {} 方法中console.log()添加了打印值,但是发现不会打印,说明没有进来。
2017-07-06 14:55
ArvinHe (作者) - 程序员
而且发现一个问题,在plusReady() 方法中的console.log()不打印,说明没有执行这个方法。。
这是啥情况呢?
n***@gmail.com
plusReady是在页面创建时自动触发,而且只触发一次,你的绑定事件里他早就触发了,你可以写在外面,init方法之后试试就会触发的
2017-07-06 19:30
ArvinHe (作者) - 程序员
为啥没人解答呀。。。~ ~!
奔跑的蘑菇
然后在detail.html页面
var self = plus.webview.currentWebview();
参数=self["id"];
试试这种方式行不行
回梦無痕 - 暂停服务
mui.fire和openWebView都写到mui.plusReady里面,因为如果把mui.fire写在外面,而mui.plusReady是异步的,里面的代码很有可能还没执行,导致页面还没有获取到。就执行了mui.fire,会找不到页面而传值失败
ArvinHe (作者)
谢谢,发现问题了,因为mui.plusReady只有在真机调试的时候才会有效果。
2017-07-10 16:49