NAJA přepis Ublaboo datagrid.js
- DAAR
- Člen | 3
Zdravím Vás všechny :)
Mám takový problém, nevím jak navázat akce z presenteru pomocí Najy a ne
klasického Nette. Konkrétně se o to snažím v datagridech Ublaboo, kdy
chci přepsat kompletně datagrid.js do Vanilly a za pomoci Najy.
Například:
$.nette.ext("datagrid.forms", {
success: function() {
return $(".datagrid").find("form").each(function() {
return window.Nette.initForm(this)
})
}
})
Jak takový kód dostat do struktury Najy? Věřím, že již někdo obdobný problém řešil a předem se omlouvám, pokud jsem vybral špatné vlákno, myslím si, že je správné a pokud to již někdo řešil a víte o konkrétní diskuzi, poprosím link.
Předem díky všem za jakýkoliv point! :))
DAAR
- jiri.pudil
- Nette Blogger | 1029
Ahoj, Naja podporuje obdobné extensions, s drobnými rozdíly:
naja.registerExtension(
function MyExtension( // <-- tu musí být konstruktor, Naja vytváří instanci pomocí "new"
naja // <-- aktuální instance Najy se vkládá jako první parametr
) {
naja.addEventListener( // <-- Naja implementuje standardní rozhraní EventEmitter
'success',
(event) => { // <-- parametry jsou zabalené v objektu typu Event
console.log(event.response.snippets);
}
);
}
);
naja.initialize(); // <-- initialize() se musí zavolat až po zaregistrování rozšíření :)
- DAAR
- Člen | 3
Tomu rozumím, mně spíš jde jen vážně o to, kam mám zadat tu
konkrétní metodu(akci z presenteru) „datagrid.forms“ → toto je asi
jediná věc, které stále nerozumím. Mluvíš o konstruktoru a dalších
věcech, ale to nezodpovídá moji otázku.
Kam do Najového zápisu napsat tu konkretní věc např. „datagrid.forms“.
Nemůžu jet na konkrétní element, potřebuji se odkázat na věci
v presenteru. Každopádně děkuji za odpověď a tvůj čas, snad už mi to
dojde, jak mi odpovíš :D :)
- jiri.pudil
- Nette Blogger | 1029
Já nějak nechápu dotaz. To „datagrid.forms“ přece nemá s presenterem vůbec nic společného, je to prostě jen řetězec pojmenovávajíci rozšíření pro nette.ajax.js. Naja nic takového nepoužívá, protože to zatím nikdo nepotřeboval :)
Odpovím tedy i konkrétně:
Jak takový kód dostat do struktury Najy?
naja.registerExtension(
function DatagridFormsExtension(naja) {
naja.addEventListener('success', () => {
const forms = document.querySelectorAll('.datagrid form');
for (let i = 0; i < forms.length; i++) {
window.Nette.initForm(forms.item(i));
}
});
}
);
A pro úplnost dodám, že zrovna toto rozšíření by nemělo být potřeba, protože formuláře a integraci s nette-forms Naja řeší sama