我正在学习Dojo 1.10.4,我的问题是onClick事件不适用于 dijit / MenuItem 。我在其他项目小部件上尝试了它,例如 dijit / CheckedMenuItem 和 dijit / RadioMenuItem ,它们的点击事件都不起作用,并且API文档没有给出任何提示它
最后,我发现只有在 dijit / MenuBar 中包含它才有效。项目小部件是否应包含在 dijit / MenuBar 或 dijit / Menu 中?如何在dojo小部件上处理事件?
例如:
<html>
<head>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.10.4/dijit/themes/claro/claro.css">
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"
data-dojo-config="async:true,parseOnLoad: true"></script>
<script>
require(["dojo/parser"],function(parser){
parser.parse();
});
</script>
</head>
<body class="claro">
<div data-dojo-type="dijit/MenuBar" >
<div data-dojo-type="dijit/MenuItem" onclick="alert();">it works</div>
</div>
<div data-dojo-type="dijit/MenuItem" onclick="alert();">it doesn't work</div>
</body>
</html>
答案 0 :(得分:0)
在这种情况下,MenuItem需要一个像Menu或MenuBar这样的ContainerWidget。您将项目添加为子项,如:
require([
"dojo/dom",
"dijit/MenuItem",
"dijit/DropDownMenu",
"dijit/form/DropDownButton"
],
function(dom,MenuItem,DropDownMenu,DropDownButton){
var myMenu = new DropDownMenu();
var menuItem1 = new MenuItem({
id:"M1",
label:"Show M1",
onClick:function(){
//do what you want to do here
}
});
myMenu.addChild(menuItem1);
});
研究这一点可能也有助于您理解它是如何工作的。 http://dojotoolkit.org/reference-guide/1.10/dijit/DropDownMenu.html#dijit-dropdownmenu
此致