2016-08-02 12 views
1

In Lenkstangen können Sie this verwenden, um den aktuellen Kontext nachzuschlagen.Wie sucht man den aktuellen Kontext in Nunjucks?

Wie machen Sie das gleiche in Nunjucks?

Zum Beispiel, wenn Sie den gesamten Kontext als JSON-String-Dump wollte: (. Aber this nicht in Nunjucks zu funktionieren scheint)

<script>window.__config__ = {{ this | dump | safe }};</script> 

Antwort

4

Wenn Sie context benötigen, dann können Sie globale Funktion hinzufügen

var env = nunjucks.configure([... 
... 
env.addGlobal('getContext', function() { 
    return this.ctx; 
}) 

Und ihr Ergebnis in Vorlage Dump

{{ getContext() | dump| safe }} 
+0

'Template machen Fehler: Typeerror: Rundbau Konvertieren ich in den JSON' Hinweis nicht überhaupt etwas zu meiner Vorlage. –

+0

Dieser Fehler bedeutet, dass Sie versuchen, in ein String-Selbstreferenzobjekt zu konvertieren: 'var obj = {a: 10}; obj.b = obj; console.log (JSON.stringify (obj)); '(filter dump ist gleich' JSON.stringify'). Sie können eigene Filter definieren, z. 'print' als' console.log (obj) ', um die Verwendung von' dump' (= 'JSON.stringify') zum Debuggen zu vermeiden. –

+0

Bro Ich steckte buchstäblich Ihren Code ein und bekam diesen Fehler. –

0

Ich glaube, Sie nicht Die Variable this ist auf einer Nunjucks-Vorlage verfügbar. Wenn es sich jedoch um eine andere handelt, die Sie untersuchen möchten, können Sie die Methode dump verwenden.

{{ users | dump }}

So wird, dass das JSON-Objekt drucken, die wirklich hässlich aussieht, wenn Sie auf autoscape haben.

{{ users | dump | safe }}

wird diese

HILFS gut funktionieren:

env.addFilter('pprint', function(str, count) { 
    return JSON.stringify(str, null, 4); 
}); 

{{ users | pprint | safe }}