MNPopups

来自于:官方立即使用

open reloadData deleteItem insertItem updateItem close show hide

论坛示例

为帮助用户更好更快的使用模块,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。

概述

MNPopups 封装了一个带有指针的弹出气泡式菜单。开发者可通过制定指针位置来自定义气泡弹出位置及其方向。亦可通过 open 接口内 styles 参数 pointer 字段来指定指针在弹出气泡的位置。

本模块所弹出的菜单依附于当前主窗口,其生命周期也同当前主窗口。点击非菜单区域可以动画的形式隐藏该菜单栏。同时支持列表项的增、删、改,支持批量更新数据。

如果列表项太多而超过模块弹出气泡区域,则用户可上下滚动查看。若开发者指定的参数使气泡菜单超出当前屏幕,则模块内部会自动重新调整该气泡的布局,使其显示在当前屏幕可视区域以内。

模块示例截图如下:

MNPopups - 图1

open

打开

open({params}, callback(ret, err))

params

rect:

  • 类型:JSON 类型
  • 描述:(可选项)弹出模块的大小配置
  • 默认值:见内部字段
  • 内部字段:
  1. {
  2. w: 100, //(可选项)数字类型;弹出模块的宽度;默认值:100
  3. h: 180 //(可选项)数字类型;弹出模块的高度;默认值:180
  4. }

position:

  • 类型:JSON 对象
  • 描述:(可选项)弹出模块的指针位置配置,模块指针为一个等边三角形。本参数确定该三角形紧贴弹框的边的中点在父窗口(window、frame)上的坐标
  • 默认值:见内部字段
  • 内部字段:
  1. {
  2. x: api.winWidth-10, //(可选项)数字类型;弹出模块指针在弹框坐标系的 x 坐标,;默认值:主窗口宽度-10
  3. y: 0 //(可选项)数字类型;弹出模块指针在弹框坐标系的 y 坐标;默认值:0
  4. }

animation:

  • 类型:布尔类型
  • 描述:弹出和隐藏菜单时是否带动画效果(时长300毫秒);弹出时从指针位置由小到大的渐大动画,隐藏时由大到小的渐小动画回到指针位置处隐藏
  • 默认:true

animationDuration:

  • 类型:数字类型
  • 描述:动画时长(单位:ms)
  • 默认:300

styles:

  • 类型:JSON 类型
  • 描述:模块整体样式
  • 内部字段:
  1. {
  2. mask: 'rgba(0,0,0,0.2)', //(可选项)字符串类型;遮罩层背景,支持 rgb、rgba、#;默认:rgba(0,0,0,0.2)
  3. bg: '#fff', //(可选项)字符串类型;列表背景,支持rgb、rgba、#;默认:#fff
  4. corner: 5, //(可选项)数字类型;弹出气泡框的圆角大小;默认:0
  5. cell: { //(可选项)列表项的样式配置
  6. bg:{ //(可选项)JSON对象;背景配置
  7. normal: '', //(可选项)字符串类型;列表项的背景,支持rgb、 rgba、#、img;默认:#fff
  8. highlight: '' //(可选项)字符串类型;列表项的高亮背景,支持 rgb、rgba、#、img;默认:bg
  9. },
  10. h: 45, //(可选项)数字类型;列表项的高度;默认:45
  11. title: { //(可选项)JSON 类型;列表项标题样式设置,上下居中显示
  12. marginL: 45, //(可选项)数字类型;列表项标题相对于列表项左边的间距大小;默认:45
  13. color: '#636363', //(可选项)字符串类型;列表项标题文字颜色,支持rgb、rgba、#;默认:#636363
  14. size: 12, //(可选项)数字类型;列表项标题字体大小;默认:12
  15. textAlign:left; //(可选项)字符串;列表标题对齐方式;默认:left;取值范围:
  16. // left 居左
  17. // right 居右
  18. // center 居中
  19. },
  20. icon: { //(可选项)JSON 类型;列表项图标的样式设置,上下居中
  21. marginL: 10, //(可选项)数字类型;图标相对于列表项左边的间距大小;默认:10
  22. w: 25, //(可选项)数字类型;图标的宽度;默认:25
  23. h: 25, //(可选项)数字类型;图标的高度;默认:同 w
  24. corner: 2 //(可选项)数字类型;图标的圆角半径;默认:2
  25. },
  26. separateLine: { //(可选项)JSON 类型;分割线的样式设置
  27. width: 1, //(可选项)数字类型;分割线的粗细,默认为1
  28. marginLR: 0, //(可选项)数字类型;分割线距离左右的间距,默认为0
  29. bg: '#C0C0C0' //(可选项)字符类型;分割线的背景颜色,支持rgb、rgba、#;默认:#C0C0C0
  30. hideLastSeparateLine: false //(可选项)布尔类型;是否隐藏最后一条分割线,默认false
  31. }
  32. },
  33. pointer: { //(可选项)JSON类型;尖角配置
  34. size: 7, //(可选项)数字类型;尖角大小,该尖角为等边三角形,本参数为该三角形边长;默认:7
  35. xPercent: 90, //(可选项)数字类型;尖角底边中点 x 坐标占模块宽度的百分比;默认:90
  36. yPercent: 0, //(可选项)数字类型;尖角底边中点 y 坐标占模块高度的百分比;默认:0
  37. orientation: 'downward' //(可选项)字符串类型;气泡菜单弹出方向,取值范围如下:
  38. // upward:向上弹出
  39. // downward:向下弹出
  40. // leftward:向左边弹出
  41. // rightward:向右边弹出
  42. },
  43. badge:{ // (可选项)JSON类型;配置badge
  44. size:10, // (可选项)数字类型;badge大大小
  45. color:'' // (可选项)字符串类型;badge的背景色
  46. }
  47. }

datas:

  • 类型:数组类型
  • 描述:菜单列表数据源
  • 内部字段:
  1. [{
  2. title: '添加朋友', //字符串类型;列表标题文字
  3. icon: 'fs://creater.png', //字符串类型;图标地址,支持本地路径(widget://、fs://)
  4. hasBadge:false // 布尔类型;是否有badge
  5. }]

border:

  • 类型:JSON 对象
  • 描述:(可选项)模块边框配置,若不传则不显示边框,本参数暂仅支持 iOS 平台
  • 内部字段:
  1. {
  2. size: 0.5, //数字类型;边框粗细;默认:0.5
  3. color: '#fff' //字符串类型;边框颜色,支持rgb、rgba、#;默认:#fff
  4. }

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. eventType: 'show', // 字符串类型;交互事件类型,取值范围如下:
  3. // show:模块加载成功并显示在屏幕上的事件(show接口不会触发此事件)
  4. // click:点击菜单列表项
  5. index: 0 // 数字类型;点击目标对应菜单列表项的索引,仅当 eventType 为 click 时有效
  6. }

示例代码

  1. var mnPopups = api.require('MNPopups');
  2. mnPopups.open({
  3. rect: {
  4. w: 100,
  5. h: 180
  6. },
  7. position: {
  8. x: api.winWidth - 10,
  9. y: 0
  10. },
  11. styles: {
  12. mask: 'rgba(0,0,0,0.2)',
  13. bg: '#eee',
  14. cell: {
  15. bg: {
  16. normal: '',
  17. highlight: ''
  18. },
  19. h: 45,
  20. title: {
  21. marginL: 45,
  22. color: '#636363',
  23. size: 12,
  24. },
  25. icon: {
  26. marginL: 10,
  27. w: 25,
  28. h: 25,
  29. corner: 2
  30. }
  31. },
  32. pointer: {
  33. size: 7,
  34. xPercent: 90,
  35. yPercent: 0,
  36. orientation: 'downward'
  37. }
  38. },
  39. datas: [{
  40. title: '添加朋友',
  41. icon: 'fs://MNPopups/addFriends.png'
  42. }, {
  43. title: '扫一扫',
  44. icon: 'fs://MNPopups/scan.png'
  45. }, {
  46. title: '面对面快传',
  47. icon: 'fs://MNPopups/send.png'
  48. }],
  49. animation: true
  50. }, function(ret) {
  51. if (ret) {
  52. alert(JSON.stringify(ret));
  53. }
  54. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

reloadData

刷新 MNPopups 列表数据

reloadData({params})

params

datas:

  • 类型:数组类型
  • 描述:(可选项)菜单列表数据源,若为空则等待 reloadData 接口刷新后显示该模块
  • 内部字段:
  1. [{
  2. title: '添加朋友', //字符串类型;列表标题文字
  3. icon: 'fs://creater.png', //字符串类型;图标地址,支持本地路径(widget://、fs://)
  4. hasBadge:false //布尔类型;是否显示badge,默认:false
  5. }]

示例代码

  1. var mnPopups = api.require('MNPopups');
  2. mnPopups.reloadData({
  3. datas: [{
  4. title: '添加群',
  5. icon: 'fs://MNPopups/addGroup.png'
  6. }, {
  7. title: '发送到电脑',
  8. icon: 'fs://MNPopups/sendComputer.png'
  9. }]
  10. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

deleteItem

从菜单列表中移除指定索引的数据

deleteItem({params})

params

index:

  • 类型:数字类型
  • 描述:数据列表的索引
  • 默认值:0

示例代码

  1. var mnPopups = api.require('MNPopups');
  2. mnPopups.deleteItem({
  3. index: 1
  4. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

insertItem

从菜单列表中的指定位置插入数据

insertItem({params})

params

index:

  • 类型:数字类型
  • 描述:(可选项)数据列表的索引
  • 默认值:列表最后一条数据的索引

data:

  • 类型:JSON 类型
  • 描述:数据源
  • 内部字段:
  1. {
  2. title: '创建群组', //字符串类型;列表标题文字
  3. icon: 'fs://creater.png' //字符串类型;图标地址,支持本地路径(widget://、fs://)
  4. }

示例代码

  1. var mnPopups = api.require('MNPopups');
  2. mnPopups.insertItem({
  3. index: 1,
  4. data: {
  5. title: '创建讨论组',
  6. icon: 'fs://creater.png'
  7. }
  8. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

updateItem

更新指定分组中指定位置的数据

updateItem({params})

params

index:

  • 类型:数字类型
  • 描述:(可选项)数据列表的索引
  • 默认值:0

data:

  • 类型:JSON 类型
  • 描述:数据源
  • 内部字段:
  1. { //JSON 数组类型;菜单列表项的数据
  2. title: '添加朋友', //字符串类型;列表标题文字
  3. icon: 'fs://creater.png' //字符串类型;图标地址,支持本地路径(widget://、fs://)
  4. }

示例代码

  1. var mnPopups = api.require('MNPopups');
  2. mnPopups.updateItem({
  3. index: 1,
  4. data: {
  5. title: '付款',
  6. icon: 'fs://MNPopups/pay.png'
  7. }
  8. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

close

关闭 MNPopups 列表视图

close()

示例代码

  1. var obj = api.require('MNPopups');
  2. obj.close();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

show

显示已隐藏的 MNPopups 列表视图

show()

示例代码

  1. var mnPopups = api.require('MNPopups');
  2. mnPopups.show();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

hide

隐藏 MNPopups 列表视图,并没有从内存里清除

hide()

示例代码

  1. var mnPopups = api.require('MNPopups');
  2. mnPopups.hide();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本