这就是我使用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的RadioButton,有没有办法可以在运行时更改已检查状态。使用“this.Id”和“evt”,我可以知道用户正在检查/取消选中哪一个。从技术上讲,如果有必要,我可以尝试取消选中其他已检查的项目以模拟单选按钮的行为。
有人能告诉我如何在运行时检查/取消选中dijit.CheckedMenuItem吗?我需要调用哪些属性和功能?
答案 0 :(得分:0)
您应该能够在其他CheckedMenuItem小部件上将checked设置为false
checkedMenuItemWidget.set('checked',false)
取消选中任何给定的checkedMenuItem。