Dojo dijit.CheckedMenuItem-在运行时更改选中的值

Dojo dijit.CheckedMenuItem-在运行时更改选中的值,dojo,Dojo,这就是我如何使用dijit创建带有复选框的下拉菜单 layerList.reverse(); var menu = new dijit.Menu({ id : 'layerMenu' }); dojo.forEach(layerList, function(layer) { menu.addChild(new dijit.CheckedMenuItem({ label : layer.title,

这就是我如何使用dijit创建带有复选框的下拉菜单

        layerList.reverse();
    var menu = new dijit.Menu({
        id : 'layerMenu'
    });
    dojo.forEach(layerList, function(layer) {
        menu.addChild(new dijit.CheckedMenuItem({
            label : layer.title,
            id : layer.title.replace(" ",""),
            checked : layer.visible,
            onChange : function(evt) {
                if (layer.layer.featureCollection) {
                    //turn off all the layers in the feature collection even
                    //though only the  main layer is listed in the layer list
                    dojo.forEach(layer.layer.featureCollection.layers, function(layer) {

                        layer.layerObject.setVisibility(!layer.layerObject.visible);

                    });
                } else {

                    layer.layer.setVisibility(!layer.layer.visible);
                }

            }
        }));
    });

    var button = new dijit.form.DropDownButton({
        label : i18n.tools.layers.label,
        id : "layerBtn",
        iconClass : "esriLayerIcon",
        title : i18n.tools.layers.title,
        dropDown : menu
    });

    dojo.byId('webmap-toolbar-center').appendChild(button.domNode);
当onChange事件触发时,我可以在运行时访问单个dijit.CheckedMenuItem,因为我知道它们的id。由于dijit没有MenuItem的单选按钮,是否有办法在运行时更改选中状态。使用“this.Id”和“evt”,我可以知道用户正在选中/取消选中哪一个。从技术上讲,如果需要模拟单选按钮行为,我可以尝试取消选中其他选中项


有人能告诉我如何在运行时选中/取消选中dijit.CheckedMenuItem吗?我需要调用哪些属性和函数?

您应该能够在其他CheckedMenuItem小部件上将checked设置为false

checkedMenuItemWidget.set('checked',false)

取消选中任何给定的checkedMenuItem。

不是那么简单。我试过onChange和onClick。使用dojo.byId(“[Id of CheckMenuItem]”)似乎给了我一些东西,但call.set('checked',false)给了我一个错误“对象不支持此属性或方法”。我也可以通过执行“var olayermenu=dojo.byId(“layerMenu”);”来访问菜单,但我无法访问单个菜单项来尝试设置选中的值。按照中的代码,我只能在onClick中获得checked属性。您需要使用dijit.byId,而不是dojo.byId,因为您操作的是小部件,而不是dom节点。