Předání dat z javascriptu do latte

bautren
Člen | 7
+
0
-

Dobrý den, pokouším se nějakým způsobem dostat data z javascriptu do latte, ale nevím jakým způsobem to mám udělat.

function showModal(id) {
	callAjax({link showModal! id})
}

Děkuji za pomoct.

Marek Bartoš
Nette Blogger | 1167
+
+5
-

Odkaz si musíš vygenerovat už na serveru, uložit ho můžeš například do data atributu společně s ID modalu. Při zobrazování modalu zavoláš už ten vygenerovaný odkaz.

Editoval Marek Bartoš (11. 10. 2021 22:27)

dakur
Člen | 493
+
+6
-

Z JS se do Latte dostat nedá. Generování probíhá takto:

Nette (PHP) generuje HTML z Latte šablony, nakonec výsledné HTML odešle zpět na klienta (do prohlížeče). Prohlížeč přelouská HTML a pokud je v něm nějaký JS, tak ho spustí.

Musíš tedy mít ten link už v tom vygenerovaném HTML. Osvědčené je to, jak píše Marek, přes data atribut. Např.:

<div data-show-modal-link="{link showModal! id}">...</div>

Z toho se vygeneruje a do prohlížeče pošle něco podobného:

<div id="modal" data-show-modal-link="https://example.com/presenter/action?do=showModal&id=1">...</div>

A v JS to vytáhneš:

document.addEventListener('DOMContentLoaded', function () { // toto potřeba jen pokud spoustíš skript dříve než je dotazovaný element (#modal)
  const link = document.getElementById('modal').dataset.showModalLink;
  // ...
})