如何根据dojo dijit中的复选框条件启用和禁用上下文菜单?

时间:2015-08-18 05:30:44

标签: dojo

function(Menu, MenuItem){
    var pMenu = null;
    pMenu = new Menu({
        targetNodeIds: ["progmenu"]
    });
    pMenu.addChild(new MenuItem({
        label: "Simple menu item",
        onClick: function(){
            pMenu.destroy();
        }
    }));

这会在div上创建上下文菜单,但我想在取消选中它时禁用上下文菜单,并在检查时再次对其进行enbale.can有人帮助我.. 我的html页面是..

<div id="progmenu" >
        <input type="checkbox" /> click </div> 

1 个答案:

答案 0 :(得分:0)

dijit/Menu本身无法禁用,但是,可以使用dijit/MenuItem属性禁用每个disabled

因此,如果要禁用菜单,可以使用dijit/Menu::getChildren()遍历所有菜单子项,然后设置属性。

要获取复选框的状态,请使用dojo/ondojo/query向其添加onChange事件处理程序,并使用event.target.checked检查是否为query("#progmenu input[type=checkbox]").on("change", function(evt) { // On change pMenu.getChildren().forEach(function(child) { // Loop over children child.set('disabled', evt.target.checked); // Set disabled state }); }); 检查与否。

例如:

dojo/_base/array

可以在JSFiddle上找到演示:http://jsfiddle.net/659t7dfj/

小编,我使用Array.prototype.forEach()循环浏览菜单项。如果您需要支持旧版浏览器,则必须切换到常规循环或使用Runtime.getRuntime().totalMemory() // amount of allocated memory in the app heap Debug.getNativeHeapAllocatedSize() // amount of allocated memory in the native heap 实用程序模块。