0

Wie eine Vorlage zu machen, basierend auf JavaScript bedingten Anweisung dhwie Vorlage zu machen, basierend auf Zustand in Javascript

<script type="text/javascript"> 
    if(localStorage.getItem("signedIn")=="True"){ 
     {% include 'shared/headers/simple-header.html' %} 
    }else{ 
     {% include 'shared/headers/loggedin-header.html' %} 
    } 
</script> 

Above Code funktioniert nicht und es gibt mir Fehler in der JavaScript-Konsole

, was das ist Best Practice, danke im Voraus.

+0

Ich habe auch mit document.write Funktion von Javascript versucht, aber das Ergebnis bleibt gleich! –

+2

Die Vorlage passiert auf der Serverseite. Javascript geschieht auf der Client-Seite. Deshalb funktioniert es nicht. –

+0

nein, webapp2 mit google app engine - python –

Antwort

2

Die {% %} Vorlage Magie führt vor dem Javascript. So injizieren Sie im Wesentlichen HTML-Code in Ihr Javascript. {% %} ist auf dem Server (Server-Seite) erfolgt und an die Vorlage gesendet. Javascript wird nach dem Empfang der Vorlage im Browser (Client-Seite) ausgeführt.

Das ist ein bisschen hacky, aber bekommt um das Timing-Problem:

<div id="simpleHeader" style="display:none;"> 
    {% include 'shared/headers/simple-header.html' %} 
</div> 
<div id="loggedInHeader" style="display:none;"> 
    {% include 'shared/headers/loggedin-header.html' %} 
</div> 

<script> 
    if(localStorage.getItem("signedIn")=="True"){ // if string "True", no quotes if Boolean True 
     document.getElementById("loggedInHeader").style.display = "block"; 
    }else{ 
     document.getElementById("simpleHeader").style.display = "block"; 
    } 
</script> 

besser wären Login auf der Server-Seite zu überprüfen.

+0

Dies kommt nie in Teil der Bedingung, aber wenn ich den Wert von "signedIn" durch eine Warnung überprüfen, heißt es: True –

+0

Vielleicht ist es ein Boolescher, und kein String: 'if (localStorage.getItem (" signedIn ") == True) {' – GAEfan

+0

Tut mir leid, ich habe es tatsächlich in meinem lokalen Speicher 'True'. –

Verwandte Themen