博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MUI-页面传值2种形式
阅读量:7104 次
发布时间:2019-06-28

本文共 2273 字,大约阅读时间需要 7 分钟。

hot3.png

在App开发中,经常会遇到页面间传值的需求,比如从列表页进入详情页,需要将列表页的id传递过去; Html5Plus规范设计了方法来解决该问题; 但evalJS方法仅接收字符串参数,涉及多个参数时,需要开发人员手动拼字符串; 为简化开发,mui框架在evalJS方法的基础上,封装了自定义事件,通过自定义事件,用户可以轻松实现多webview间数据传递。有2种方式,下面分别介绍

一、详情页是预加载页面,这时需要在详情页定义并监听自定义事件

在详情页监听自定义事件moiveId(在详情页定义的自定义事件)

//添加movieId自定义事件			window.addEventListener("moiveId", function(event) {				var id = event.detail.id;				//console.log(id);				var mask = mui.createMask();				mask.show();				plus.nativeUI.showWaiting("加载中", {					width: "100px",					height: "100px"				})				//根据id请求电影详情数据				mui.getJSON("https://api.douban.com/v2/movie/subject/"+id,function(resp){					var directors=[];					for(var i=0;i

列表页通过fire触发自定义事件(详情页是预加载的情况)

var detailPage = null;			mui.plusReady(function() {				//预加载页面				detailPage = mui.preload({					id: "moive-detail",					url: "./html/moive_detail.html"				});			});            function open_detail(item) {				// 触发详情页面的movieId事件				mui.fire(detailPage, 'moiveId', {					id: item.id				})				// 打开预加载的电影详情页				mui.openWindow({					id: 'moive-detail'				})			}

注意:预加载页面要写到mui.plusReady里面

 

二、非预加载的详情页(即进入详情页才加载页面)

在列表页通过mui.openWindow()的extra传递参数,下面是vue方法中打开详情页方法时传参

var data_detail = new Vue({				el:"#content",				data:getDefaultData(),				methods:{					resetData:function(){						Object.assign(this.$data,getDefaultData())					},					open_detail:function(item){						//打开演员详情						mui.openWindow({							id:"cast-detail",							url:"./cast-detail.html",							extras:{								castId:item.id							}						})					}				}			})

 

在详情页通过currentWebview与列表页传过来的castId属性获取列表页传过来的参数,如下面代码片段中的var self =plus.webview.currentWebview();self.caseId

mui.plusReady(function() {				var self = plus.webview.currentWebview();				var mask = mui.createMask();				mask.show();				plus.nativeUI.showWaiting("加载中", {					width: "100px",					height: "100px"				})				console.log("self,castID" + self.castId);				mui.getJSON("https://api.douban.com/v2/movie/celebrity/" + self.castId, function(resp) {					data_detail.name = resp.name;					data_detail.enName = resp.name_en;					data_detail.cover = resp.avatars.medium;					data_detail.summary = resp.gender + "," + resp.born_place;					data_detail.works = resp.works;					plus.nativeUI.closeWaiting()					mask.close();				})			})

 

转载于:https://my.oschina.net/u/2612473/blog/1800922

你可能感兴趣的文章
CentOS 查看IP,端口 修改IP,打开端口生效
查看>>
让history命令可以记录所有shell命令的执行时间
查看>>
SQL联合语句的视觉解释
查看>>
Docker私有仓库Registry搭建(localhost 可行但跨主机有问题)
查看>>
DM 源码阅读系列文章(三)数据同步处理单元介绍
查看>>
android -------- RecyclerView的可(多个Item水平,垂直)滚动列表的实现
查看>>
GoLang练习实例100之009----格式输出当前时间
查看>>
JavaScript实现在线websocket WSS测试工具 -toolfk程序员工具网
查看>>
【分享】WeX5的正确打开方式(1)
查看>>
advanced_CSS_5_2
查看>>
推荐!国外程序员整理的Java资源大全
查看>>
新书《开源安全运维平台OSSIM最佳实践》亮相2016北京图书订货会
查看>>
if语句
查看>>
gcc automake autoconf m4
查看>>
异构计算完全解析-CSDN.NET
查看>>
spring boot(七):springboot+mybatis多数据源最简解决方案
查看>>
逻辑卷、物理卷、卷组 的关系
查看>>
如何 3D 打印一个密码锁
查看>>
读取超大数据文件入库可能会用到的php.ini设置
查看>>
jquery change事件
查看>>