Pri práci s komponentom dgrid môže používateľ naraziť na problém, kedy metóda byId() z modulu dijit/registry pre získanie prístupu k widgetu nie je funkčná. Dôvodom tohto stavu je spôsob akým je dgrid vytvorený, keďže dgrid nie je vytvorený ako bežný dojo widget.Príklad: Použitie metódy byId() vráti undefined.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<div id="dgrid"></div>
<script>
require(["dojo/ready", "dgrid/OnDemandGrid",
"dojo/store/Memory", "dijit/registry"],
function(ready, Grid, Memory, registry){
ready(function(){
var data =[
{id: 1, item: "Demo line 1"},
{id: 2, item: "Demo line 2"},
{id: 3, item: "Demo line 3"}
];
var layout =[
{field: "id", label: "ID"},
{field: "item", label: "ITEM"}
];
var Dgrid =new Grid({
columns: layout,
store: new Memory({
data: data
})
}, "dgrid");
console.dir(registry.byId("dgrid"));
});
});
</script>
Ako vidieť v konzole, výsledkom použitia zápisu registry.byId() je hodnota undefined. Pre podporu modulu dijit/registry je potrebné rozšíriť modul OnDemandGrid o ďalší modul s názvom DijitRegistry, ktorý sa nachádza medzi rozšíreniami dgridu. Spolu s modulom DijitRegistry je potrebné použiť aj modul declare. Následne ich spojením cez zápis declare([Grid, DijitRegistry]) sa vytvorí constructor, ktorý už podporuje zápis registry.byId().Príklad: Použitie metódy byId() vráti dgrid.
Okrem modulu declare je možné použiť aj modul lang a metódu extend(), ktorá modifikuje pôvodný constructor dgridu. Príklad: Aplikovanie modulu lang a metódy extend().
Po menších úpravách a pridaní rozšírenia DijitRegistry už dgrid podporuje aj metódu byId(), prostredníctvom ktorej je možné pristupovať k jeho vlastnostiam a metódam. 4.6.2013, Matej LednárKategória: DojoDojo,programovanie,dojo,JavaScript,grid,dgrid,dgrid/OnDemandGrid,dojo/store/Memory,dijit/registry,dgrid/extensions/DijitRegistry,dojo/_base/declare,dojo/_base/langŽ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.