2017-05-03 5 views
1

Ich verwende python jinja2, um json in eine HTML Datei zu übergeben. Die json Ich gehe wie unten ähnlich,Verwenden von JavaScript-Variablen beim Zugriff auf einen Jinja-Vorlagenwert

result = { "config":{ "firstTitle" : "Report" } } 

In meiner HTML Datei Ich habe eine javascript Funktion wie folgt, die wie erwartet funktioniert,

function dispDetails() 
    { 
     //This works as expected 
     //It print 'Report' in the console 
     console.log('{{ config.firstTitle }}'); 
    } 

Aber wenn meine javascript Funktion als modifiziert wird ein einzubeziehen javascript variable der Code erros wirft,

function dispDetails() 
    { 
     //Error thrown : jinja2.exceptions.TemplateSyntaxError: expected name or number 
     titleStr = "firstTitle"; 
     console.log('\'{{ config.'+titleStr+' }}\''); 
    } 

ich habe verschiedene Wege versucht, mach das funktionierend, bin mir nicht sicher, wo ich falsch liege und brauche eine Anleitung dazu.

+0

Mögliches Duplikat [JavaScript Variable Makros in jinja2 Vorlage passieren] (http://stackoverflow.com/questions/32390539/how-to-pass-javascript-variable-to-macros-in-jinja2-template) –

Antwort

2

Jinja-Variablen werden NUR zur Renderzeit festgelegt und was Sie versuchen, ist unmöglich.

Dies ist Pseudo-Code, aber Sie könnten möglicherweise eine js Variable mit Ihrem jinja json und den Zugang, dass erklären:

var config = {{ config | tojson }}; 
function dispDetails() 
{ 
    titleStr = "firstTitle"; 
    console.log(config[titleStr]); 
} 
+1

Ich versuchte die genannte Lösung. 'console.log (config.titleStr)' hat undefined zurückgegeben, also habe ich 'console.log (config [titleStr])' 'versucht, was bei mir funktioniert hat. Danke für die Hilfe! – nidHi

+1

@nidHi ah, natürlich! das würde es tun. meine js ist ein wenig eingerostet. Meine Antwort wurde aktualisiert :) – dizzyf

Verwandte Themen