我们有一个案例,我们只知道运行时菜单项的图标。我知道iconClass
有一个diji.MenuItem
参数,但除非我们在运行时使用dojox.html.insertCssRule
动态添加CSS规则,否则这没有什么帮助 - 必须有更好的方法!
以下是我们尝试做的一个示例:
pMenu = new dijit.Menu({
targetNodeIds: ["NEW_APP"],
leftClickToOpen: true
});
pMenu.popupDelay = 100;
pMenu.addChild(new dijit.PopupMenuItem({
label: "clocks",
iconSrc: "image/clocks.png",
onClick: dojo.hitch(core.editor, core.editor.createNewApp)
}));
答案 0 :(得分:3)
当然,有一种更好的方法,虽然不理想,如:
myMenuItem.iconNode.style.cssText =
"background-image: url(...); width: 16px, height: 16px";
答案 1 :(得分:3)
对http://robrobbins.info/?p=372的引用适用于较旧版本的dojo。在较新的语法中,可以按如下方式定义类以执行相同的操作:
define("Foo/FooMenuItem", ['dojo', 'dijit/dijit', "dojo/_base/declare", "dijit/MenuItem"],
function(dojo, dijit, declare, MenuItem) {
return declare("Foo.FooMenuItem", [MenuItem], {
iconSrc: "unknown",
_setIconSrcAttr: {node: "iconNode", type: "attribute", attribute: "src" }
});
});
简单的Foo.FooMenuItem类可以在初始化类时设置“icon”属性,并将值集插入到图标的img src文件中。它可以像这样引用:
pMenu.addChild(new Foo.FooMenuItem ({
label: "clocks",
iconSrc: "image/clocks.png",
onClick: dojo.hitch(core.editor, core.editor.createNewApp)
}));