Pri práci s Dojo Toolkit je viacero spôsobov ako vyhľadať widget. Jeden spôsob je cez DOMNode, druhý cez atribút id. Widgety je možné hľadať priamo alebo nepriamo. Pre demonštráciu ako vyhľadávať widgety použijem deklaratívny zápis viacerých widgetov (TitlePane, Form, TextBox, Button) do sekcie HTML a základ pre testovanie do sekcie pre JavaScript.Príklad: Testovacia vzorka s viacerými widgetmi - zápis do sekcie HTML.
Základom pre vyhľadávanie widgetov je modul dijit/registry, ktorý obsahuje všetky potrebné metódy.
Metóda byId()
Metóda sa používa na už vytvorený widget, ktorý je v DOM. Na základe hodnoty atribútu id sa vráti widget ako objekt. DOMNode, ktorý je widgetom obsahuje HTML atribút widgetid. Ak atribút id neexistuje alebo DOMNode s atribútom id nie je widgetom, metóda vráti hodnotu undefined. Príklad: Zápis metódy byId().
1
var widget = registry.byId(id);
Metóda byNode()
Metóda sa používa na už vytvorený widget, ktorý je v DOM. Na základe DOMNode sa vráti widget ako objekt. DOMNode, ktorý je widgetom, obsahuje HTML atribút widgetid. Ak DOMNode neexistuje alebo DOMNode nie je widgetom, metóda vráti hodnotu undefined. Príklad: Zápis metódy byNode().
1
var widget = registry.byNode(DOMNode);
Metóda getEnclosingWidget()
Metóda vráti najbližší widget k zadanému DOMNode vrátane. To znamená, že ak je DOMNode zároveň widget, nevyhľadáva smerom nahor, ale vráti widget reprezentujúci daný DOMNode. Vyhľadávanie funguje smerom nahor, teda k parentom. Ak widget v smere nahor neexistuje, vráti hodnotu null. Príklad: Zápis metódy getEnclosingWidget().
1
var widget = registry.getEnclosingWidget(DOMNode);
Metóda findWidgets()
Metóda hľadá opačným smerom ako metóda getEnclosingWidget(). Tentoraz vráti len najbližších potomkov. Ak je DOMNode zároveň aj widget, nevráti ho. Hľadá smerom nadol - do vnútra stromu a len prvý výskyt. Prehľadáva celú úroveň prvého výskytu widgetu, takže vráti všetky widgety na rovnakej úrovni. Metóda neprehľadáva obsah nájdených potomkov, takže nevráti všetky widgety, ktoré sú v definovanom DOMNode. Výsledkom vyhľadávania je pole. Ak v DOMNode nie je žiaden widget, vráti prázdne pole.Príklad: Zápis metódy findWidgets().
1
var widgets = registry.findWidgets(DOMNode);
Záver
Ak poznáte ďalšie zaujímavé tipy, ako vyhľadávať widgety, podeľte sa o ne prostredníctvom komentára.27.9.2015, Matej LednárKategória: DojoDojo,dijit/registry,dojo/dom,findWidgets,getEnclosingWidget,widget,byId,byNode,dijit/TitlePane,dijit/form/Form,dijit/form/TextBox,dijit/form/ButtonŽiadna časť tohto článku nesmie byť reprodukovaná bez uvedenia autora a URL na túto stránku.Viac informácií nájdete v sekcii O projekte.