为什么 onClick 事件对 dojo MenuItem 不起作用?

Why onClick event not work on dojo MenuItem?

我正在研究 Dojo 1.10.4,我的问题是 onClick 事件在 dijit/MenuItem 上不起作用。我在其他项目小部件上尝试过它,例如 dijit/CheckedMenuItemdijit/RadioMenuItem,none 他们的点击事件有效,并且 API 文档没有给出任何相关提示。

最后,我发现它只有包含在 dijit/MenuBar 中才有效。 Item 小部件应该包含在 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>

在这种情况下,MenuItem 需要像 Menu 或 MenuBar 这样的 ContainerWidget。您将项目添加为 child,例如:

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

此致