установить значок для dijit.MenuItem - PullRequest
4 голосов
/ 24 января 2010

У нас есть случай, когда мы знаем только значок для пункта меню во время выполнения. Я знаю, что для diji.MenuItem есть параметр iconClass, но это мало поможет, если мы не добавим динамически правила CSS во время выполнения с dojox.html.insertCssRule - должен быть лучший способ!

Вот пример того, что мы пытаемся сделать:

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 ]

3 голосов
/ 28 сентября 2012

Ссылка на 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)
}));
3 голосов
/ 27 января 2010

Конечно, есть лучший способ, хотя и не идеальный, что-то вроде:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...