使用dojo下Menu和PopupMenuItem实现动态菜单

 

        昨天早上来公司上班,上头抛给我一个加急任务,一个动态菜单的配置与实现。我想了想,类似功能很常见,并且在现已有的系统中已经有了一种模式的展现。

 

        最开始,从已有系统中找到了一个右键菜单的功能实现,主要使用了dijit.Menu和dijit.MenuItem通过嵌套组合的方式来实现层级的菜单功能。但是后来通过观察发现,这一对标签的使用,需要结合页面是的dom标签。所以找了一下,发现在Dojo中simple example中,已经提供了一个封装的比较成熟的控件dijit.form.ComboButton ,按照例子代码所示,只有dijit.Menu和dijit.MenuItem实现不了多层级菜单的功能,需要引入dijit.PopupMenuItem作为一级菜单拓展二级菜单的一个标识。简单来说,若想拓展一个菜单,就在外面写一个PopupMenuItem标签,里边写好完整的Menu和MenuItem标签。复杂的菜单结构就需要通过嵌套这几个标签就ok啦。

        具体如下:

		    <div data-dojo-type="dijit.Toolbar">
		   		<div data-dojo-type="dijit.form.ComboButton" >
		   				<span>${resourceBundle.functionMenu}</span>
						<span data-dojo-type="dijit.Menu">
							<span data-dojo-type="dijit.PopupMenuItem">
								<span>${resourceBundle.unifyReceive}</span>
								<span data-dojo-type="dijit.Menu">
									<span data-dojo-type="dijit.MenuItem" data-dojo-props="id: '${id}_systemReceive'" data-dojo-attach-event="onClick: _onMenuClick">${resourceBundle.systemReceive}</span>
									<span data-dojo-type="dijit.MenuItem" data-dojo-props="id: '${id}_importReceive'" data-dojo-attach-event="onClick: _onMenuClick">${resourceBundle.importReceive}</span>
									<span data-dojo-type="dijit.MenuItem" data-dojo-props="id: '${id}_documentReceiveProcess'" data-dojo-attach-event="onClick: _onMenuClick">${resourceBundle.documentReceiveProcess}</span>
									<span data-dojo-type="dijit.MenuItem" data-dojo-props="id: '${id}_technologyReview'" data-dojo-attach-event="onClick: _onMenuClick">${resourceBundle.technologyReview}</span>
									<span data-dojo-type="dijit.MenuItem" data-dojo-props="id: '${id}_archiveReceiveProcess'" data-dojo-attach-event="onClick: _onMenuClick">${resourceBundle.archiveReceiveProcess}</span>
									<span data-dojo-type="dijit.MenuItem" data-dojo-props="id: '${id}_receiveRecordSearch'" data-dojo-attach-event="onClick: _onMenuClick">${resourceBundle.receiveRecordSearch}</span>
									<span data-dojo-type="dijit.MenuItem" data-dojo-props="id: '${id}_receiveRecordStatistics'" data-dojo-attach-event="onClick: _onMenuClick">${resourceBundle.receiveRecordStatistics}</span>
								</span>
							</span>
							<span data-dojo-type="dijit.PopupMenuItem">
								<span>${resourceBundle.documentDistribte}</span>
								<span data-dojo-type="dijit.Menu">
									<span data-dojo-type="dijit.MenuItem" data-dojo-props="id: '${id}_documentDistributionManage'" data-dojo-attach-event="onClick: _onMenuClick">${resourceBundle.documentDistributionManage}</span>
									<span data-dojo-type="dijit.MenuItem" data-dojo-props="id: '${id}_distributionFormManage'" data-dojo-attach-event="onClick: _onMenuClick">${resourceBundle.distributionFormManage}</span>
									<span data-dojo-type="dijit.MenuItem" data-dojo-props="id: '${id}_documentNotice'" data-dojo-attach-event="onClick: _onMenuClick">${resourceBundle.documentNotice}</span>
									<span data-dojo-type="dijit.MenuItem" data-dojo-props="id: '${id}_documentRecycle'" data-dojo-attach-event="onClick: _onMenuClick">${resourceBundle.documentRecycle}</span>
									<span data-dojo-type="dijit.MenuItem" data-dojo-props="id: '${id}_departmentDocumentReceive'" data-dojo-attach-event="onClick: _onMenuClick">${resourceBundle.departmentDocumentReceive}</span>
									<span data-dojo-type="dijit.MenuItem" data-dojo-props="id: '${id}_departmentDocumentSubmit'" data-dojo-attach-event="onClick: _onMenuClick">${resourceBundle.departmentDocumentSubmit}</span>
									<span data-dojo-type="dijit.MenuItem" data-dojo-props="id: '${id}_departmentDocumentDistribute'" data-dojo-attach-event="onClick: _onMenuClick">${resourceBundle.departmentDocumentDistribute}</span>
									<span data-dojo-type="dijit.MenuItem" data-dojo-props="id: '${id}_distributionRecordSearch'" data-dojo-attach-event="onClick: _onMenuClick">${resourceBundle.distributionRecordSearch}</span>
									<span data-dojo-type="dijit.MenuItem" data-dojo-props="id: '${id}_distributionRecordStatistics'" data-dojo-attach-event="onClick: _onMenuClick">${resourceBundle.distributionRecordStatistics}</span>
								</span>	
							</span>


          <帮助>  http://dojotoolkit.org/api/




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是一道光_

1分也是爱,鼓励鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值