• MUI框架


    Hbuilder中敲mheader生成的代码块,会自动生成带有返回导航箭头的标题栏,点击返回箭头可关闭当前页面,原因就是因为该返回箭头包含.mui-action-back类,代码如下:

    <header class="mui-bar mui-bar-nav">
        <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
        <h1 class="mui-title">标题</h1>
    </header>

    若希望在顶部导航栏之外的其它区域添加关闭页面的控件,只需要在对应控件上添加.mui-action-back类即可,如下为一个关闭按钮示例:

    <button type="button" class='mui-btn mui-btn-danger mui-action-back'>关闭</button>

    mui框架封装的页面右滑关闭功能,默认未启用,若要使用右滑关闭功能,需要在mui.init();方法中设置swipeBack参数,如下:

    mui.init({
        swipeBack:true //启用右滑关闭功能
    });

     mui框架默认会监听Android手机的back按键,然后执行页面关闭逻辑; 若不希望mui自动处理back按键,可通过如下方式关闭mui的back按键监听;

    mui.init({
        keyEventBind: {
            backbutton: false  //关闭back按键监听
        }
    });

    除了如上三种操作外,也可以直接调用mui.back()方法,执行窗口关闭逻辑;

    mui.back()仅处理窗口逻辑,若希望在窗口关闭之前再处理一些其它业务逻辑,则可将业务逻辑抽象成一个具体函数,然后注册为mui.init方法的beforeback参数;beforeback的执行逻辑为:

    • 执行beforeback参数对应的函数若返回false,则不再执行mui.back()方法;
    • 否则(返回true或无返回值),继续执行mui.back()方法;

    示例:从列表打开详情页面,从详情页面再返回后希望刷新列表界面,此时可注册beforeback参数,然后通过自定义事件通知列表页面刷新数据,示例代码如下:

    mui.init({
        beforeback: function(){
            //获得列表界面的webview
            var list = plus.webview.getWebviewById('list');
            //触发列表界面的自定义事件(refresh),从而进行数据刷新
            mui.fire(list,'refresh');
            //返回true,继续页面关闭逻辑
            return true;
        }
    });

    注意:beforeback的执行返回必须是同步的(阻塞模式),若使用nativeUI这种异步js(非阻塞模式),则可能会出现意想不到的结果;比如:通过plus.nativeUI.confirm()弹出确认框,可能用户尚未选择,页面已经返回了(beforeback同步执行完毕,无返回值,继续执行mui.back()方法,nativeUI不会阻塞js进程):在这种情况下,若要自定义业务逻辑,就需要复写mui.back方法了;如下为一个自定义示例,每次都需要用户确认后,才会关闭当前页面:

    //备份mui.back,mui.back已将窗口关闭逻辑封装的比较完善(预加载及父子窗口),因此最好复用mui.back
    var old_back = mui.back;
    mui.back = function(){
      var btn = ["确定","取消"];
      mui.confirm('确认关闭当前窗口?','Hello MUI',btn,function(e){
        if(e.index==0){
            //执行mui封装好的窗口关闭逻辑;
            old_back();
        }
      });
    }
  • 相关阅读:
    Python3学习笔记(十七):requests模块
    fiddler(四)、断点(转)
    fiddler(三)、会话框添加显示请求方法栏
    PostgreSQL12同步流复制搭建-同步不生效的问题、主库恢复后,无法与新主库同步问题
    PostgreSQL的count(*) count(1) count(列名)的区别
    CentOS系统日志(转)
    常用PostgreSQL HA(高可用)工具收集
    转-性能优化中CPU、内存、磁盘IO、网络性能的依赖
    PostgreSQL查询数据库中包含某种类型的表有哪些
    PostgreSQL中with和without time zone两者有什么区别
  • 原文地址:https://www.cnblogs.com/luoshang/p/7520606.html
Copyright © 2020-2023  润新知