为dijit.MenuItem设置图标

时间:2010-01-24 06:52:33

标签: dojo

我们有一个案例,我们只知道运行时菜单项的图标。我知道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)
}));

2 个答案:

答案 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)
}));