2010-01-24 37 views
4

我们有一种情况,我们只知道运行时菜单项的图标。我知道diji.MenuItem有一个iconClass参数,但除非我们在运行时动态添加CSS规则与dojox.html.insertCssRule,否则这没什么帮助 - 必须有更好的方法!dijit.MenuItem的设置图标

下面是我们正在尝试做的一个例子:

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

http://robrobbins.info/?p=372 – 2010-09-23 21:12:26

回答

3

当然,还有一个更好的方法,虽然不是很理想,这样的:

myMenuItem.iconNode.style.cssText = "background-image: url(...); width: 16px, height: 16px";

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类可以然后才有“图标”属性设置在类被初始化,值设置将插入图标的img src字段中。它可以被引用像这样:


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