Dojo 设置dijit.MenuItem的图标

Dojo 设置dijit.MenuItem的图标,dojo,Dojo,在这种情况下,我们在运行时只知道菜单项的图标。我知道diji.MenuItem有一个iconClass参数,但这没有什么帮助,除非我们在运行时使用dojox.html.insertcsrule动态添加CSS规则-一定有更好的方法 下面是我们正在尝试做的一个例子: pMenu = new dijit.Menu({ targetNodeIds: ["NEW_APP"], leftClickToOpen: true }); pMenu.popupDelay = 100; pMenu

在这种情况下,我们在运行时只知道菜单项的图标。我知道
diji.MenuItem
有一个
iconClass
参数,但这没有什么帮助,除非我们在运行时使用
dojox.html.insertcsrule
动态添加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)
}));

当然,有一种更好的方法,虽然并不理想,比如:


myMenuItem.iconNode.style.cssText=
“背景图像:url(…);宽度:16px,高度:16px”;

对的引用适用于较旧版本的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”属性,并且该值集将被插入到icon的img src字段中。可以引用如下内容:


pMenu.addChild(new Foo.FooMenuItem ({
    label: "clocks",
    iconSrc: "image/clocks.png",
    onClick: dojo.hitch(core.editor, core.editor.createNewApp)
}));