mui开发app之自定义事件以更新其他页内容
我之前做过jquery mobile的开发,那还是前年的事情
在jquery mobile中,由于页面是存储在div[data-role=page]的dom中(jqmobile通过对data-role的dom分析解释app的页面布局和切换,不会每次都加载完整的html页面,所以js摆放位置需要尤其注意,不能再head当中,因为不会去读head)
<body>
<div data-role="page"> <div data-role="header">
<h1>欢迎来到我的主页</h1>
</div> <div data-role="main" class="ui-content">
<p>我现在是一个移动端开发者!!</p>
</div> <div data-role="footer">
<h1>底部文本</h1>
</div> </div>
</body>
所以,jqmobile可以在切换页面中轻松的判断页面事件,使用如下代码,有兴趣可以看看:
$(document).on("pageinit",function(){
alert("pageinit 事件触发!")
});
其中“pageinit”只是其中一种事件罢了,还有pageshow,pagebeforeshow,pagecreate,pagehide,pagechange,pageload等等的方法来判断页面的事件,详见jquery mobile事件
但是不巧的是,我在mui的webview中并没有看到这样的方法判断事件(本身mui和jqmobile不同,jqmobile是spa单页调用,mui是真正的在页面中跳转的),所以当你在页面切换的时候不能根据页面变化来触发一些反复调用的js方法,因为每一次都在新的html中(重复调用的页面会在缓存中,这也是为什么返回后不会重新执行html文件下的js方法原因,真蛋疼)
关于spa和html原生跳转自行百度
比如:我现在编辑了个人资料,返回首页时候,由于mui.back并不会重新生成html(事实上我们也不希望重新生成的),那么js方法不会重新执行的,而我在index中有一个刷新用户信息的方法也不能用了
最初,我想我可以在返回前,保存用户资料的时候触发这个方法,可是你会发现这时因为将要返回到的页面的dom根本还不存在,你刷新个毛啊!(・∀・ ?(・∀・ ?(・∀・ ?)
最后,查找mui,dcloud的官方文档,决定采用自定义事件fire()+webview()来解决,代码应该在编辑页面,当编辑保存后页面$.back()时候触发,mui.init()中有beforeback参数可以使用,在此之前先看看关于$.back()的官网解释:
mui框架将窗口关闭功能封装在mui.back方法中,具体执行逻辑是:
- 若当前webview为预加载页面,则hide当前webview;
- 否则,close当前webview;
在mui框架中,有三种操作会触发页面关闭(执行mui.back方法):
- 点击包含
.mui-action-back类的控件 - 在屏幕内,向右快速滑动
- Android手机按下back按键
代码如下:
mui.init({
swipeBack: true,
beforeback: function() {
//获得index界面的webview(缓存中)
var view = plus.webview.getWebviewById('index');
//updateHeadInfo为事件,不是方法!
mui.fire(view, 'updateHeadInfo');
//返回true,继续页面关闭逻辑
return true;
}
});
返回到目标页面时,这个事件触发的方法已经被执行了
var update_head_info = function() {
alert("sss");//测试
}
window.addEventListener("updateHeadInfo",update_head_info);//添加自定义事件,其他页面调用
注意:addEventlEListener的第二参数传入的是方法(函数)的变量名,update_head_info,后面不能添加括号,否则没有触发“updateHeadInfo”就会立即执行(也就是页面一载入就立马执行,这会很让人费解)
当然,before的代码也可以放到,提交表单成功之后,或者任何想要的时候,并不一定需要放在beforeback发生时
mui开发app之自定义事件以更新其他页内容的更多相关文章
- mui开发app之cropper裁剪后上传头像的实现
在大多数app项目中,都需要对用户头像的上传,之前做web开发的时候,我主要是通过input type=file的标签实现的,上传后,使用php对图片进行裁剪,这种方式比较传统简单. 此次app开发中 ...
- mui开发app前言(一)
dcloud mui开发app前言 大一那会就听说html5快要发布了,前景无量,厉害到能写操作系统==|||(什么???蛤?) 似乎html5标准还没正式发布那会,使用hybrid模式开发app已经 ...
- mui开发app之js将base64转图片文件
之前我已经做过一个利用cropper裁剪并且制作头像的功能.如何在mui app中实现相册或相机获取图片后裁剪做头像请看另一篇博客:mui开发app之cropper裁剪后上传头像的实现 但是当时裁剪后 ...
- 利用 MUI开发app, 如何实现侧滑菜单及其主体部分上下滑动
利用mui开发APP 之侧滑菜单主内容滚动问题 MUI作为开发者常用的框架之一,其号称最接近原生APP体验的高性能前端框架.因此利用mui开发移动APP,可以为开发者提供很大的便利和接近原生的体验. ...
- MUI开发APP,scroll组件,运用到区域滚动
最近在开发APP的过程中,遇到一个问题,就是内容有一个固定的头部和底部. 头部就是我们常用的header了,底部的话,就放置一个button,用来提交页面数据或者进入下一个页面等,效果 ...
- mui开发app之webview是什么
WebView(网络视图)能加载显示网页,可以将其视为一个浏览器,webview被封装在html5+,plus对象中,底层由java,OC实现. 先来谈谈我对webview的理解: 使用mui开发的a ...
- mui开发app之联网应用传输数据
手机的app分为,在线和单机,在线就是类似于C/S模式,能与服务器与他人共享数据的程序,单机就是在没有网络下可以玩转的app. 目前互联网盛行的时代,99%的程序都是联网环境下工作的.那么如何开发本地 ...
- mui开发app之html5+,5+Runtime,5+sdk,native.js
说说几个名词 html5:目前最新的html规范,w3c联盟制定,手机端主要由webkit实现规范,对用户来说就是浏览器实现了它 html5+:所谓"+",扩充了html5原本没有 ...
- mui开发app之多图压缩与上传(仿qq空间说说发表)
欲实现效果图 提出需求点: 用户可自由添加删除替换多张图片,并且显示相应缩略图,限制为8张 用户可选择压缩图或直接上传原图功能 返回提醒用户会丢失填写的信息 下面一个个实现上述需求,从简单到复杂: 需 ...
随机推荐
- jeesite学习(一) common部分(1)
我们按照先细节后整体的方式来进行学习,即先了解各个包中包含的内容,再从整体上看各个包之间的关系. 0 common中的包 先看jeesite的common组件,common中共包含14个包(如下图), ...
- ###服务(Service)
Start服务开启方式 1) 创建服务 public class MyService extends Service 2) 添加注册表 <service android:name=&qu ...
- ###Intent的使用(活动中穿梭)
让活动切换有两种方式 显示意图和隐式意图 显示意图:只能在本应用中穿梭: 隐式意图:可以调用其他应用程序的活动,包括系统应用,但是需要配置清单文件 显式Intent 1) 创建一个新的活动 2) 确定 ...
- 实现input输入时智能搜索
// 智能搜索 function oSearchSuggest(searchFuc) { var input = $('#in'); var suggestWrap = $('#gov_search_ ...
- 如何用正确的姿势查看 主机系统的CPU信息
一.关于CPU的几个概念 CPU的作用 计算机中的中央处理单元(CPU)执行基本的计算工作 -- 运行程序.但是,一个单核的CPU同一时间只能一次执行一个任务,为了提高计算机的处理能力,也就出现了多C ...
- Sublime安装Package Control插件
一.简易安装 打开Sublime text的console.打开console的快捷时ctrl+,或者在菜单栏点击View->Show Sonsole`.打开后将下面的代码复制到console中 ...
- iOS开发之UIView的常见属性
1.所有控件都继承自UIView,UIView的常见属性如下: @property(nonatomic,readonly) UIView *superview;获得自己的父控件对象 @property ...
- nfs服务端配置文件详解
配置参数语法 配置文件路径 /etc/exports 可以使用#进行注释说明 一个完整的配置实例至少需要3个参数 1.被共享的目录 必须是存在的目录 2.向谁共享 可以指定主机或网络范围,支持通配符* ...
- Terminating app due to uncaught exception 'NSUnknownKeyException' this class is not key value coding-compliant for the key
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ViewController > se ...
- devcpp中很简单的排序
之前学的东西,不知什么缺了,什么没缺,索性重头开始弄,用的是<啊哈!算法>. 排序很简单,小的可以选择死磕.直接贴一份代码. #include<iostream> #inclu ...