Jak definovat neco v komponente a includovat na konec hlavniho @layout.latte?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
flexroad
Člen | 117
+
0
-

Ahoj,

resim takovy orisek…

v komponente potrebuju definovat script, pro priklad:

//mojekomponenta.late
{block #pageJs}
    <script>
    	$('#neco').udelejNeco();
    </script>
{/block}

Problem je, ze se script vykresli uprostred html kodu, ale jquery nacitam az uplne na konci, takze to logicky haze chybu, ze $ is not defined.

Zkousel jsem treba vlozit toto do @layout.latte ,ale nic se nedeje a script se vykresluje stale uprostred html :(

{block #pageJs}{/block}

Nejake napady?

Diky,

@flexroad

Editoval flexroad (17. 4. 2015 13:06)

akadlec
Člen | 1326
+
0
-

nelze, komponenty jsou mimo layout. Musíš si to předat jinak

Marek Šneberger
Člen | 130
+
0
-

Spíš bych to dal do externího .js souboru, než cpát JS do layoutu :)

flexroad
Člen | 117
+
0
-

Marek Šneberger napsal(a):

Spíš bych to dal do externího .js souboru, než cpát JS do layoutu :)

No to bych rad, ale hromada veci se tam generuje dynamicky…
Ted treba resim dependent selectboxy, ktere jsou navic vykreslovany pres „select2“. :(

akadlec
Člen | 1326
+
0
-

Tak pak můžeš použít assets loader , webloader apod.

bazo
Člen | 620
+
0
-

do hlavicky si vloz

<script>
			var q = [], $ = function (f) {
				q.push(f);
			};
</script>

v komponentach pouzivaj

$(function(){
...
});

a v js co vkladas na konci stranky

$.each(q, function(index, f) {
		$(f);
	});

s tym ze $ bude uz teraz jquery