2010-05-19 4 views
1

J'ai ce code.variables de modèle dwoo dans JavaScript?

{if $loginUrl} 
{literal} 
<script type="text/javascript"> 
    var newwindow; 
    var intId; 
    function login() { 
     var screenX = typeof window.screenX != 'undefined' ? window.screenX : window.screenLeft, 
      screenY = typeof window.screenY != 'undefined' ? window.screenY : window.screenTop, 
      outerWidth = typeof window.outerWidth != 'undefined' ? window.outerWidth : document.body.clientWidth, 
      outerHeight = typeof window.outerHeight != 'undefined' ? window.outerHeight : (document.body.clientHeight - 22), 
      width = 500, 
      height = 270, 
      left  = parseInt(screenX + ((outerWidth - width)/2), 10), 
      top  = parseInt(screenY + ((outerHeight - height)/2.5), 10), 
      features = (
       'width=' + width + 
       ',height=' + height + 
       ',left=' + left + 
       ',top=' + top 
      ); 

     newwindow=window.open('{$loginUrl}','Login by facebook',features); 

     if (window.focus) {newwindow.focus()} 
     return false; 
    } 
</script> 
{/literal} 
{/if} 

Il s'agit de modèles dwoo, je me demande comment puis-je utiliser mes variables dwoo dans javascript? Im essayant de le faire juste à vous pouvez voir au code, mais ça ne marche pas. J'ai besoin de déformer mon code entre {literal} pour que ça fonctionne.

+0

Je ne sais pas quoi que ce soit au sujet dwoo, mais en supposant qu'il est un côté serveur chose, probablement quelque chose comme 'val somevar =" {$ somevar} ";' – Jonah

Répondre

-1

Vous pouvez simplement faire {/literal}{$the_varible}{literal} pour insérer des variables dans les balises littérales.

+0

Pas mal, mais pas l'histoire complète non plus, et certainement pas idéal, alors je voudrais bosse ma réponse au sommet depuis le gars qui a demandé est hors de la grille. Aucune offense, j'espère. – Seldaek

-2

Hm .. trouvé une "solution", mais il est hardcoded et il devrait y avoir quelque chose de mieux:

{if $loginUrl} 
{literal} 
<script type="text/javascript"> 
    var newwindow; 
    var intId; 
    function login() { 
     var screenX = typeof window.screenX != 'undefined' ? window.screenX : window.screenLeft, 
      screenY = typeof window.screenY != 'undefined' ? window.screenY : window.screenTop, 
      outerWidth = typeof window.outerWidth != 'undefined' ? window.outerWidth : document.body.clientWidth, 
      outerHeight = typeof window.outerHeight != 'undefined' ? window.outerHeight : (document.body.clientHeight - 22), 
      width = 500, 
      height = 270, 
      left  = parseInt(screenX + ((outerWidth - width)/2), 10), 
      top  = parseInt(screenY + ((outerHeight - height)/2.5), 10), 
      features = (
       'width=' + width + 
       ',height=' + height + 
       ',left=' + left + 
       ',top=' + top 
      ); 

     newwindow=window.open({/literal}'{$loginUrl}'{literal},'Login by facebook',features); 

     if (window.focus) {newwindow.focus()} 
     return false; 
    } 
</script> 
{/literal} 
{/if} 

juste .. laid.

4

Supprimez les balises {literal}. Dwoo est assez intelligent à ce sujet pour éviter de gâcher votre javascript sauf si vous utilisez des littéraux d'objet dans une ligne. Pour être exact, {suivi de tout espace, tabulation ou saut de ligne ne sera pas analysé par Dwoo. Le seul problème est que si vous faites quelque chose comme:

{foo: "bar"} 

Dans ce cas, vous avez quelques options pour éviter l'analyse syntaxique Dwoo:

\{foo: "bar"} // escape the { 
{ foo: "bar"} // add a space so it doesn't match it 
{literal}{foo: "bar"}{/literal} // wrap with literal, but then you can't use vars inside again 

// or expand it to use multiple lines, which is usually more readable anyway 
{ 
    foo: "bar" 
}