MUI框架-02-注意事项-适用场景-实现页面间传值

MUI框架-02-注意事项-适用场景-实现页面间传值

快速入门 - 注意事项

  • 有些可能看不懂,这样排是为了可以做 MUI 开发的时候,养成良好的习惯,避免不必要的错误
  • DOM 结构:
    • 关于 mui 页面的 dom,你需要知道如下规则
  • 固定栏靠前:
    • 所谓的固定栏,也就是带有.mui-bar 属性的节点,都是基于 fixed 定位的元素;
    • 常见组件包括:顶部导航栏(.mui-bar-nav)、底部工具条(.mui-bar-footer)、底部选项卡(.mui-bar-tab);这些元素使用时需遵循一个规则:放在.mui-content 元素之前,即使是底部工具条和底部选项卡,也要放在.mui-content 之前,否则固定栏会遮住部分主内容;
  • 一切内容都要包裹在 mui-content 中
    • 除了固定栏之外,其它内容都要包裹在.mui-content 中,否则就有可能被固定栏遮罩,原因:固定栏基于Fixed定位,不受流式布局限制,普通内容依然会从 top:0 的位置开始布局,这样就会被固定栏遮罩,mui 为了解决这个问题,定义了如下 css 代码:
      .mui-bar-nav ~ .mui-content {
         padding-top: 44px;
     }
     .mui-bar-footer ~ .mui-content {
         padding-bottom: 44px;
     }
     .mui-bar-tab ~ .mui-content {
         padding-bottom: 50px;
     }
    • 你当然可以通过自定义CSS的方式实现如上类似效果,但为了使用简便,建议将除固定栏之外的所有内容,全部放在.mui-content 中
  • 始终为 button 按钮添加 type 属性
    • 若button按钮没有type属性,浏览器默认按照type=submit逻辑处理,这样若将没有type的button放在form表单中,点击按钮就会执行form表单提交,页面就会刷新,用户体验极差。
  • 窗口管理
    • 页面初始化:必须执行mui.init方法
      mui在页面初始化时,初始化了很多参数配置,比如:按键监听、手势监听等,因此mui页面都必须调用一次mui.init()方法;
  • 页面跳转:抛弃 href 跳转
  • 页面关闭:勿重复监听 backbutton
    • mui框架自动封装了页面关闭逻辑,若希望自定义返回逻辑(例如编辑页面的返回,需用户确认放弃草稿后再执行返回逻辑),则需要重写mui.back方法,切勿简单通过addEventListener添加backbutton监听,因为addEventListener只会增加新的执行程序,mui默认封装的监听执行逻辑依然会继续执行,因此若仅addEventListener添加用户确认框,则用户即使选择了取消,也会继续关闭窗口。
  • 手势操作
    • 点击:忘记click
      快速响应是mobile App实现的重中之重,研究表明,当延迟超过100毫秒,用户就能感受到界面的卡顿,然而手机浏览器的click点击存在300毫秒延迟(至于为何会延迟,及300毫秒的来龙去脉,请自行谷百),mui为了解决这个问题,封装了tap事件,因此在任何点击的时候,请忘记click及onclick操作,统统使用如下代码:
     element.addEventListener('tap',function(){
         //点击响应逻辑
     });
  • 常见错误
    • Uncaught ReferenceError: plus is not defined
    • 在app开发中,若要使用HTML5+扩展api,必须等plusready事件发生后才能正常使用,否则可能会报“plus is not defined”的错误;
      mui为简化开发,将plusReady事件封装成了mui.plusReady()方法,凡涉及到HTML5+的api,建议都写在mui.plusReady方法中;

适用场景

  • mui 适用场景说明:
  • 为解决HTML5在低端Android机上的性能缺陷,mui引入了原生加速,其中最关键的就是webview控件,因此mui若要发挥其全部能力,需和5+ App配合适用,若脱离5+ App,mui功能会受限,主要涉及三个部分:

适用场景-webview窗口相关

  • 涉及 webview 的,除了5+App,其它所有手机浏览器及PC浏览器均无法使用,涉及功能点包括:
  • webview模式窗体动画
    创建子窗口(除了为解决区域滚动的常见双webview场景,还涉及
  • webview模式的选项卡等多webview场景)
  • webview模式的侧滑菜单(也有div方式侧滑菜单)
  • webview模式的tab选项卡(也有div方式选项卡)
  • nativeUI,如原生的警告框、确认框、popover、actionsheet、toast。这些也有HTML5的实现。
  • 预加载
  • 自定义事件

第三方扩展插件

  • 涉及webview的,除了5+App,其它所有手机浏览器及PC浏览器均无法使用,目前主要包括:语音输入;
  • Touch事件相关(注意pc浏览器没有touch事件)
  • Touch事件相关的,手机端浏览器均可使用、pc端chrome模拟手机浏览器也可以正常使用。
  • 但普通PC端浏览器因为没有touch事件,可以显示控件但滑动操作功能会受限;涉及功能点包括:

手势事件

  • mui封装的tap相关处理业务:折叠面板、二级列表、二级选项卡;
  • mui封装的swipe、drag相关处理业务:图片轮播、可左右滑动的图文表格、可左右滑动的9宫格、滑动触发列表项菜单、可拖动式侧滑菜单、下拉刷新和上拉加载、可拖动式选项卡
  • 【备注】:在PC端,大家将tap替换成click,将HTML5默认的Drag事件替换mui 的swipe和drag,就可以解决如上两个问题。
  • 除上述列出的功能点,其它mui功能,均可以在其它手机浏览器及PC服务端使用,所有CSS均不受影响。
  • 若通过PC端chrome模拟手机浏览器访问hello mui,只能看到首页标题栏,看不到列表,因为列表是作为子webview页面加载到首页的,如无法显示

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官网中自定义事件的介绍

更多文章链接:MUI 框架


  • 本笔记不允许任何个人和组织转载

原文地址:https://www.cnblogs.com/xpwi/p/9701111.html

时间: 2024-11-05 19:33:09

MUI框架-02-注意事项-适用场景-实现页面间传值的相关文章

MUI开发指南(四) MUI 页面间传值

http://dev.dcloud.net.cn/mui/window/#openwindow extras 新窗口的额外扩展参数,可用来处理页面间传值:例如: var webview = mui.openWindow({ url:'info.html', extras:{ name:'mui' //扩展参数 } }); console.log(webview.name);//输出mui字符串 注意:扩展参数仅在打开新窗口时有效,若目标窗口为预加载页面,则通过mui.openWindow方法打开

mui框架中,当初始进入某个页面时候,数据没有加载出来显示有误

在mui框架中,初始化进入一个页面,js可能加载缓慢,数据使用vue的时候会显示{{****}},中间是你的值,会影响用户体验.可以先把数据部分隐藏,再展示出来 [v-cloak]{ display: none; } 原文地址:https://www.cnblogs.com/wuzhaoyu/p/12055740.html

[HTML]HTML框架IFrame下利用JS在主页面和子页面间传值

今天写的程序涉及到JS框架传值的问题,这些是我找到的一些资料 下面主页面和子页面互相传值的DEMO 如果仅仅需要子页面触发主页面的函数 仅需 [ parent.window.你的函数 ] 就可以了 DOM方法:父窗口操作IFRAME:window.frames["iframeSon"].documentIFRAME操作父窗口: window.parent.document jquery方法:在父窗口中操作 选中IFRAME中的所有输入框: $(window.frames["i

HTML框架IFrame结合JS在主页面和子页面间传值

下面主页面和子页面互相传值的DEMO 如果仅仅需要子页面触发主页面的函数 仅需 [ parent.window.你的函数 ] 就可以了 DOM方法:父窗口操作IFRAME:window.frames["iframeSon"].documentIFRAME操作父窗口: window.parent.document jquery方法:在父窗口中操作 选中IFRAME中的所有输入框: (window.frames["iframeSon"].document).find(”

使用mui框架打开页面的几种不同方式

1.创建子页面: list.html就是index.html的子页面,创建代码比较简单,如下: mui.init({ subpages: [{ url: 'list.html', //子页面HTML地址,支持本地地址和网络地址 id: 'list.html', //子页面标志 styles: { top:45px , //mui标题栏默认高度为45px bottom:0px , //子页面底部位置 }, }] }); 2.打开新页面 mui.openWindow({ url: new - pag

mui跨页面的传值和取值

最近在做一个基于mui框架的移动app.遇到跨页面传值的问题.在此做以记录 mui.openWindow({ url:'parkDetail.html', id: 'parkDetail', styles:{ top:'newpage-top-position',//新页面顶部位置 bottom:'newage-bottom-position',//新页面底部位置 width:'newpage-width',//新页面宽度,默认为100% height:'newpage-height',//新页

MUI框架-01-介绍-创建项目-简单页面

MUI框架-01-介绍-准备-创建项目 从0开始快速高效学习 MUI 框架 官方文档:http://dev.dcloud.net.cn/mui/ui/ (1)MUI 介绍 MUI 是什么,解决了什么问题? MUI 官方号称最接近原生APP体验的高性能前端框架 简单的说就是webapp的以个开发框架 webapp和原生app性能及体验的差距,一直是移动app开发者放弃HTML5的首要原因. 浏览器天生的切页白屏.不忍直视的转页动画.浮动元素的抖动.无法流畅下拉刷新等问题,这些都让HTML5开发者倍

移动端 mui框架中input输入框或任何输入框聚焦后页面自动上移

一.mui框架中点击input后,安卓手机弹出自带的输入键盘时,页面自动上移 实现方法: (1)只要把input标签放在mui-content这个类里面就可以了 <div class="mui-content"> <input .../> </div> 注意:在有些情况下不适用,当把input标签放入mui-scroll中就不行了,也就是说mui-content和mui-scroll同时存在时不适用 <div class="mui-c

MUI 框架微信支付

在MUI 框架中实现了支付宝支付后,以为MUI微信支付,也没什么大问题,结果这个问题困扰了我几天,后面再同事的提醒下终于弄出来了, 问题出在,开始使用Dcloud 公有证书 怎么也付不了....,后面改成自己就OK了....希望后来者看到此博,能节约一点时间. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" co