视频地址:http://pan.baidu.com/s/1sjse7yH
popMenu组件,弹出菜单组件。
目录
一、综述
二、DOM结构
三、样式
四、属性
五、方法
六、事件
七、操作
八、案例
一. 综述
popMenu是弹出菜单组件。组件不可视,配合button组件使用,使开发者能快速完成弹出菜单、下拉菜单的开发。设计器里点击右键“显示”、“隐藏”可预览或隐藏popMenu组件。
组件路径:$UI/system/components/justep/popMenu/
组件标识:UI2/system/components/justep/popMenu/popMenu
二. DOM结构
- 典型dom结构
<div component="$UI/system/components/justep/popMenu/popMenu"
class="x-popMenu" xid="popMenu1" anchor="button1" direction="left-bottom"
autoHidable="true" dismissible="true" opacity="0.0">
<div class="x-popMenu-overlay" xid="div1"/>
<ul component="$UI/system/components/justep/menu/menu"
class="x-menu dropdown-menu x-popMenu-content"
xid="menu1">
<li class="x-menu-item" xid="item1">
<a component="$UI/system/components/justep/button/button"
class="btn btn-link"
label="菜单项1" xid="button2">
<i xid="i2"/>
<span xid="span2">菜单项1</span>
</a>
</li>
<li class="x-menu-divider divider" xid="divider1"/>
<li class="x-menu-item" xid="item2">
<a component="$UI/system/components/justep/button/button"
class="btn btn-link"
label="菜单项2" xid="button3">
<i xid="i3"/>
<span xid="span3">菜单项2</span>
</a>
</li>
</ul>
</div>
三. 样式
- x-popMenu
基础样式(必须)。
四. 属性
组件具有公共属性,请参考组件公共属性
- opacity
[float]遮罩透明度,如:0.5,1.0为不透明
- anchor
[string]停靠位置,指定相对停靠的组件
- direction
[string]停靠方向,取值范围:
left-bottom(左下)

right-bottom(右下)

left-top(左上)

right-top(右上)

- dismissible
[boolean]点击空白区域是否隐藏,false为不隐藏,默认true
- autoHidable
[boolean]点击关闭后是否关闭,false为不关闭,默认true
- xid
[string]组件标示
五. 方法
组件具有公共方法,请参考组件公共方法
- get
Object get (String name)
获取属性
> 参数
name:[String] 属性名,取值范围:opacity、anchor、direction、dismissible
> 返回值
Object
>例:
this.comp("popMenu1").get("dismissible");
- set
void set (json arg)
设置属性值
> 参数
arg:[json] 属性值对,结构如下:
{
“opacity” : 遮罩透明度
“anchor” : 停靠位置,指定相对停靠的组件
“direction” : 停靠方向,取值范围:left-bottom、right-bottom、left-top、right-top
“dismissible” : 点击空白区域是否隐藏
}
> 返回值
void
>例:
this.comp("popMenu1").set({
"opacity":"0.5",
"anchor":"button4",
"direction":"left-top",
"dismissible":"false"
});
- show
void show ()
显示
> 返回值
void
>例:
this.comp("popMenu1").show();
- hide
void hide ()
隐藏
> 返回值
void
>例:
this.comp("popMenu1").hide();
六. 事件
- (无)
七. 操作
- show()
显示popMenu组件
- hide()
隐藏popMenu组件
八. 案例
1、下拉菜单
- 增加button组件、popMenu组件
- 展开popMenu组件,在menu上点右键添加Item和分割线
- 修改Item下的button的icon和label属性来配置菜单图标和名称
- 设置popMenu组件透明度、显示位置、显示方向等属性
- button组件绑定click事件,选择操作:{operation:’popMenu1.show’}
代码示例:
<a component="$UI/system/components/justep/button/button"
class="btn btn-default btn-icon-right"
label="下拉菜单" xid="button1" icon="icon-arrow-down-b"
onClick="button1Click">
<i xid="i1" class="icon-arrow-down-b"/>
<span xid="span1">下拉菜单</span>
</a>
<div component="$UI/system/components/justep/popMenu/popMenu"
class="x-popMenu" xid="popMenu1"
anchor="button1" direction="left-bottom" opacity="0.0"
autoHidable="true" dismissible="true">
<div class="x-popMenu-overlay" xid="div1"/>
<ul component="$UI/system/components/justep/menu/menu"
class="x-menu dropdown-menu x-popMenu-content"
xid="menu1">
<li class="x-menu-item" xid="item1">
<a component="$UI/system/components/justep/button/button"
class="btn btn-link"
label="菜单项1" xid="button2">
<i xid="i2"/>
<span xid="span2">菜单项1</span>
</a>
</li>
<li class="x-menu-divider divider" xid="divider1"/>
<li class="x-menu-item" xid="item2">
<a component="$UI/system/components/justep/button/button"
class="btn btn-link"
label="菜单项2" xid="button3">
<i xid="i3"/>
<span xid="span3">菜单项2</span>
</a>
</li>
</ul>
</div>
2、动态隐藏菜单项
- 增加data组件,有id、标题、状态三列
- 增加popMenu组件
- 展开popMenu组件,在menu上点右键添加Item和分割线
- 设置popMenu组件透明度
- 增加list组件
- list组件绑定data组件显示数据
- list组件绑定touchstart和touchend事件,写JS判断时长实现长按事件
- JS中根据状态值来隐藏菜单项:状态为“已完”的显示编辑和删除菜单项,状态为“未完”只显示编辑项
代码示例:
<div component="$UI/system/components/justep/list/list"
class="x-list" xid="list1" data="list">
<ul class="x-list-template" xid="listTemplateUl1">
<li xid="li1" bind-touchstart="li1Touchstart"
bind-touchend="li1Touchend"
bind-css="{'active':val('fID')==data.val('fID')}"
class="list-group-item">
<div component="$UI/system/components/bootstrap/row/row"
class="row" xid="row1">
<div class="col col-xs-1" xid="col1">
<span xid="span7" bind-text="ref('fID')"/>
</div>
<div class="col col-xs-9" xid="col2">
<span xid="span6" bind-text="ref('fTitle')"/>
</div>
<div class="col col-xs-2" xid="col3">
<span xid="span15" bind-text="ref('fState')"/>
</div>
</div>
</li>
</ul>
</div>
<div component="$UI/system/components/justep/popMenu/popMenu"
class="x-popMenu" xid="popMenu4"
direction="right-bottom" dismissible="true" autoHidable="false"
opacity="0.8">
<div class="x-popMenu-overlay" xid="div3"/>
<ul component="$UI/system/components/justep/menu/menu"
class="x-menu dropdown-menu x-popMenu-content addMenu"
xid="menu3">
<li class="x-menu-item" xid="item4">
<a component="$UI/system/components/justep/button/button"
class="btn btn-link btn-icon-left"
label="操作" xid="button8" icon="icon-chevron-right">
<i xid="i8" class="icon-chevron-right"/>
<span xid="span12">操作</span>
</a>
</li>
<li class="x-menu-divider divider" xid="divider3"/>
<li class="x-menu-item" xid="item5">
<a component="$UI/system/components/justep/button/button"
class="btn btn-link"
label="编辑" xid="button9">
<i xid="i9"/>
<span xid="span13">编辑</span>
</a>
</li>
<li class="x-menu-item" xid="item6">
<a component="$UI/system/components/justep/button/button"
class="btn btn-link" label="删除" xid="button10">
<i xid="i10"/>
<span xid="span14">删除</span>
</a>
</li>
</ul>
</div>
var times=0,timing="";
Model.prototype.li1Touchstart = function(event){
times=0;
timing=setInterval(function(){
times++;
},1000);
};
Model.prototype.li1Touchend = function(event){
var list=this.comp("list");
var o=this.comp("addMenu");
clearInterval(timing);
if(times>1){
var state=list.getValue("fState",event.bindingContext.$object);
if(state == "已完"){
$("div[xid=popMenu4]").find(".x-menu-item").each(function(){
$(this).removeClass("hide");
});
} else if( state == "未完"){
$("div[xid=popMenu4]").find(".x-menu-item").each(function(){
if($(this).text().indexOf("删除")>=0){
$(this).addClass("hide");
}
});
}
this.comp("popMenu4").show();
}
};
本文由WeX5君整理,WeX5一款开源免费的html5开发工具,H5 App开发就用WeX5!
阅读其他app 开发相关文章:http://doc.wex5.com/?p=3443



看这个架势,又要回去学js了