×
Vytvárame riešenia

Ako aplikovať dijit/registry na dgrid (Dojo)

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.
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
32
33
34
35
36
<div id="dgrid"></div>
<script>
require(["dojo/ready", "dgrid/OnDemandGrid",
"dojo/store/Memory", "dijit/registry",
"dgrid/extensions/DijitRegistry", "dojo/_base/declare"],
function(ready, Grid, Memory, registry,
DijitRegistry, declare) {
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 GridMixin = declare([Grid, DijitRegistry]);
var Dgrid = new GridMixin({
columns: layout,
store: new Memory({
data: data
})
}, "dgrid");
console.dir(registry.byId("dgrid"));
});
});
</script>
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().
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
32
33
34
35
36
<div id="dgrid"></div>
<script>
require(["dojo/ready", "dgrid/OnDemandGrid",
"dojo/store/Memory", "dijit/registry",
"dgrid/extensions/DijitRegistry", "dojo/_base/lang"],
function(ready, Grid, Memory, registry,
DijitRegistry, lang) {
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"}
];
lang.extend([DijitRegistry, Grid]);
new Grid({
columns: layout,
store: new Memory({
data: data
})
}, "dgrid");
console.dir(registry.byId("dgrid"));
});
});
</script>

Záver

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.


Dojo,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.

Komentáre

Článok neobsahuje zatiaľ žiadne komentáre.

Pridať komentár

Meno (povinné)
Web
Správa (povinné)
Odoslať
Od najnovších