Skip to content

Latest commit

 

History

History
154 lines (102 loc) · 5.29 KB

modal.md

File metadata and controls

154 lines (102 loc) · 5.29 KB

用途

含有遮罩层的对话框,用于模拟浏览器的alert、confirm等。

模态对话框通过遮罩层来阻止用户的其他行为。

分类

  • 标准弹框 (标题、内容、底部)

标准

  • 非标准弹框 (内容)

非标准

它们的相同点是都有最外边的容器和关闭按钮。

标准弹框其实也可以隐藏标题和底部,但是非标准弹框更多的是需要支持自定义的布局(例如弹框里面有一个Tab),而标准在标题、内容、底部这几块布局上都做了限制。

依赖

因为右上角的关闭图标用到了webIcon,所以会依赖下面的css文件,这一块在将来会做处理。

<link rel="stylesheet" href="//at.alicdn.com/t/font_rh9ogim4kcd0wwmi.css">

API

基本用法:

new Dui.Modal(option)

option为json对象

参数 类型 默认值 描述
option.type string default 弹框类型,默认为标准弹窗。当需要支持非标准弹框,值为:custom
option.className string 挂载到弹框上的类,通过它来自定义自己的class
option.mask boolean true 是否显示蒙板
option.closeClass string iconfont icon-shanchu5 关闭按钮的class,必须使用webIcon的类
option.zIndex int 9999 最外层容器的z-index属性
option.width int/string 420 弹框宽度,写法支持:160px 或者 160,当宽超过920时,会取920的宽度
option.height int/string auto 弹框高度,写法支持:160px 或者 160,当要求高度自适应时,值为auto,但它和宽度一样,有一个最大高度:580
option.title string 提示 弹框标题,建议传单纯的文字。当值为空时,整个title不存在
option.titleIconClass string 弹框标题图标的class,当有该class时,如iconfont icon-sousuo1,它就会显示在title中
option.content string 内容 弹框内容,支持HTML
option.btnPos string right 弹框底部按钮对齐方式,默认靠右对齐,取值:left/center/right
option.ok boolean/string false 当值为boolean时,表示是否显示确认按钮;当值为字符串时,显示确认按钮,并将它的按钮文本修改成该字符串
option.cancel boolean/string false 当值为boolean时,表示是否显示取消按钮;当值为字符串时,显示取消按钮,并将它的按钮文本修改成该字符串
option.okFn function 显示确认按钮,触发确认的事件
option.cancelFn function 显示确认按钮,触发确认的事件
option.close boolean true 是否显示右上角的关闭按钮
option.init function 弹框渲染完可能要做一些处理的事件,在事件中可以通过this.dialogDom取到弹框容器
option.draggable boolean false 是否可以拖拽对话框,默认为false
option.appendEl string/dom document.body 弹窗插入到哪个容器下,但边界目前还未处理,还是以html整个为边界

content的说明:

当它以#开头时,会去找ID为”#“后面的内容的DOM元素,然后取到它里面的innerHTML。往往会有以下两种情况:

  • script,譬如:
<script type="text/html">
    这里是内容啊
</script>
  • 隐藏的DIV容器,譬如:
<div style="display: none">
    这里是内容
</div>

两者的区别在于,script里面的内容可以被多次利用,而隐藏的DIV容器则不会,在程序中有一个判断,如果是DIV容器,取到它的innerHTML后,将其从document上移除。

理由在于隐藏的div容器也是真实存在的DOM,将其内容挂载到弹窗上时,要将这个外面的DOM给删除掉,以确保事件的唯一性。


支持的方法:

方法名 描述
hide 关闭弹窗

调用方式简单如下:

var dialog = new Dui.Modal({})
dialog.hide();

注:像init或者okFn函数中,可以通过调用this.hide()来关闭(销毁)弹窗

支持的事件:

事件通过$on来绑定,如:

var dialog = new Dui.Modal({})
dialog.$on("事件名", function(){})
事件名 描述
ok 点击确定触发的事件
close 点击右上角关闭时触发的事件
cancel 点击取消触发的事件
esc 键盘ESC触发的事件
destroy 取消、“关闭”、“ESC”都会触发的事件
dragStart 当draggable为true时,开始拖拽的事件
dragEnd 当draggable为true时,结束拖拽的事件

高级用法(静态方法)

  • Dui.Modal.alert(content[, title, close])

弹出一个alert对话框。

例:

Dui.Modal.alert("xxxx");
  • Dui.Modal.confirm(content[, title, close, align])

align为确定取消按钮的显示位置,默认为居右。

弹出一个confirm对话框。它会返回一个Promise对象,因此如果在非chrome下要引用promise库才行,不然会报错

通常我们在点击确认后,想做一些事件,代码如下:

Dui.Modal.confirm("xxxx").then(function(){
    //todo something
});