Wie maskiere ich eine Fluid Template Variable in Javascript

  • 0 x
    123 Beiträge
    0 Hilfreiche Beiträge
    11. 02. 2013, 08:46

    Hallo und guten Morgen,

    ich habe ein JavaScript in meinem Fluid template. Ich möchte nun gerne eine Template Variable innerhalb des JS verwenden. Aber die Variable wird nicht ersetzt:

    center: new google.maps.LatLng( {boo.lat} , {boo.lng} ),

    {boo.lat} und {boo.lng} sollen ersetzt werden. Aber wie müssen diese korrekt maskiert werden, damit es funktioniert?

    Beste Dank für die kommende Hilfe :)

    Gruß
    Stefan

  • Hilfreichster Beitrag

  • beo6 beo6
    Padawan
    1 x
    45 Beiträge
    1 Hilfreiche Beiträge
    11. 02. 2013, 17:40 - Hilfreichster Beitrag

    Hallo.

    Leider hat Fluid gerne probleme mit inline javascript da sowohl in Fluid als auch in JavaScript geschwungene Klammern verwendet werden.

    Ich habe es umgangen indem ich teile in CDATA eingefasst habe und nach Möglichkeit direkt als erstes für alle Fluid Variablen entsprechende JavaScript variablen definiert.

    innerhalb der jQuery ready funktion habe ich dann eigentlich nur auf die normale Fluid Syntax statt der Inline Syntax gesetzt. Also <f:uri.action action="ajaxGetVideo" pageType="20" />
    statt {f:uri.action(action:'ajaxGetVideo', pageType:20)}

    z.B. bei JQuery sah das dann so aus:

    1. <script type="text/javascript">
    2. var videoname = '{m:explode(string:currentVideo.0.name,pos:0)}';
    3. var imagename = '{currentVideo.0.bigimage}';
    4. var currentvideo = '{currentVideo.0.hashid}';
    5.  
    6. <![CDATA[$j(document).ready(function(){]]>
    7. // hier einiges an Javascript Fluid gemisch.
    8. //...
    9. $j('#video').load('<f:uri.action action="ajaxGetVideo" pageType="20"/>', function() {
    10. // weiteres JS zeug
    11. });
    12. //...
    13. <![CDATA[});]]>

    kann leider auch je nach Editor Chaos mit Syntax highlighting geben aber eine bessere Möglichkeit kenne ich auch nicht.

    Hoffe ich konnte helfen.


  • 1
  • beo6 beo6
    Padawan
    1 x
    45 Beiträge
    1 Hilfreiche Beiträge
    11. 02. 2013, 17:40

    Hallo.

    Leider hat Fluid gerne probleme mit inline javascript da sowohl in Fluid als auch in JavaScript geschwungene Klammern verwendet werden.

    Ich habe es umgangen indem ich teile in CDATA eingefasst habe und nach Möglichkeit direkt als erstes für alle Fluid Variablen entsprechende JavaScript variablen definiert.

    innerhalb der jQuery ready funktion habe ich dann eigentlich nur auf die normale Fluid Syntax statt der Inline Syntax gesetzt. Also <f:uri.action action="ajaxGetVideo" pageType="20" />
    statt {f:uri.action(action:'ajaxGetVideo', pageType:20)}

    z.B. bei JQuery sah das dann so aus:

    1. <script type="text/javascript">
    2. var videoname = '{m:explode(string:currentVideo.0.name,pos:0)}';
    3. var imagename = '{currentVideo.0.bigimage}';
    4. var currentvideo = '{currentVideo.0.hashid}';
    5.  
    6. <![CDATA[$j(document).ready(function(){]]>
    7. // hier einiges an Javascript Fluid gemisch.
    8. //...
    9. $j('#video').load('<f:uri.action action="ajaxGetVideo" pageType="20"/>', function() {
    10. // weiteres JS zeug
    11. });
    12. //...
    13. <![CDATA[});]]>

    kann leider auch je nach Editor Chaos mit Syntax highlighting geben aber eine bessere Möglichkeit kenne ich auch nicht.

    Hoffe ich konnte helfen.

  • 0 x
    123 Beiträge
    0 Hilfreiche Beiträge
    12. 02. 2013, 08:18

    Hallo und guten beo6,

    erstmal vielen Dank für deine ausführliche Antwort. Diese hat mir sehr geholfen. Ich konnte damit mein Problem lösen. Ich finde diese CDATA Schreibweise zwar nicht sehr elegant aber es funktioniert. Wenn jmd. noch eine elegantere Methode kennt, kann er die uns gerne hier mitteilen. Aber bis dahin, 1000 Dank. Hast mir den Tag gerettet #giggle#

    Beste Grüße
    Stefan

  • 1