Jak správně vložit JS komponenty?

Jigs
Člen | 14
+
0
-

Ahojte,

peru se s tím, že se mi nedaří správně vložit JS, který patří k jedné komponentě. Skončil jsem u toho, že jsem si vytvořil renderJs a renderuji to přes

{control reservation:js}

To funguje OK. Problém ale nastane ve chvíli, kdy potřebuji ten JS a tu komponentu vykreslit až ve chvíli, kdy potřebuji. Když udělám něco takového:

{snippet reservationJs}
	{if $showReservation}
		{control reservation:js}
	{/if}
{/snippet}

Tak se stane zajímavá věc. A to to, že sice se JS naincluduje, ale všechny eventy jsou uchycené 2×. Takže když tam mám JS, který ukládá rezervaci, tak se mi ta akce provede 2× a to úplně nechci. Nevíte někdo, jak to mám udělat, aby to fungovalo správně? :-).

Formuláře se tu vykreslují přes modal okna, takže je potřeba to dělat přes AJAX a přes snippety..

Díky za odpovědi.

CZechBoY
Člen | 3608
+
+1
-

Pokud tě netrápí, že přenášíš redundantní kod tak bych všechen js hodil do jednoho souboru a ten servíroval klientovi. Odpadne ti tím spousta práce. To stejný můžeš udělat i pro css.
Na tuhle práci se většinou používá webpack, grunt, gulp atp.

Jigs
Člen | 14
+
0
-

Díky za odpověď. To mě až zas tak netrápí. Spíše mě trápí, že v tom JS si potřebuji vytahat parametry z template.

Např.:

$(document).on("click", ".go-pay", function (event) {
        event.preventDefault();
        $.nette.ajax({
            url: {link updatePrice!},
            type: "POST",
            data: { "reservation-reservation_id": {$reservation->getId()}, "reservation-price": $('#price').val() }
        }).done(function(payload) {
            window.location.href = {plink AlternativePayments: $reservation->getId()};
        });
    });

Edit:

Asi jediná rozumná varianta bude si naházet všechny ty potřebné parametry např. jako hidden parametry do formu a v JS to vytahovat, že?

Editoval Jigs (21. 9. 2018 14:06)

Kcko
Člen | 465
+
+3
-

Idealbe do data atributů

Jigs
Člen | 14
+
0
-

Kcko napsal(a):

Idealbe do data atributů

To je dobrý nápad. Díky! Každopádně se mi v tomto případě osvědčil ten hidden parametr, protože je tu několik skriptů, které potřebují znát ID rezervace.

CZechBoY
Člen | 3608
+
+1
-

A id rezervace muzes dat do data atributu taky, nebo proc bys nemohl?