Deklarace proměné v externím js souboru

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

Zdravím mám nasledující problém. V externím .js souboru se snažím deklarované proměnné přiřadit hodnotu proměnné nastavené v presenteru:

var homepage = {$isHomepage};

Tohle nefunguje. Firebug hlásí invalid object initializer. Když ovšem deklaraci vložím přímo do šablony a zbytek JS kódu nechám v externím souboru, tak to funguje.

Tak by mě zajímalo, kde je zakopaný pes, v čem dělám chybu, že se mi nedaří proměnnou inicializovat v tom externím souboru.

Jan Endel
Člen | 1016
+
0
-

Do js souboru se vubec nedostane latte parser, takze takhle ti to nikdy fungovat nebude, zkus to treba pres data- parametry.

toncek
Člen | 2
+
0
-

Díky, za vysvětlení! Těmi data-parametry myslíš postup popsaný v dokumentaci na stránce věnované Ajaxu? Např. JSON nebo jsem úplně vedle? S Ajaxem jako s technologií se teprve seznamuju..

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Data parametry jsou v HTML <body data-something="whatewer">. V JS je pak třeba s jQuery možné je načíst takto: $('body').data('something'). Je to čistý způsob, jak si předat věci ze serveru do JS bez AJAXu.

Špatný nápad není použít json_encode, například:

<body data-foo="{=json_encode(array( ... ))}">

V JS to volání pak vrátí prohnat JSON.toJSON() nebo tak nějak (viz Google) a je z toho to samé pole, co v PHP.

Editoval vojtech.dobes (25. 1. 2012 18:06)