2016-08-02 8 views
1

ハンドルバーでは、thisを使用して現在のコンテキストをルックアップできます。Nunjucksで現在のコンテキストを検索するには?

あなたはNunjucksでこれをどうやってやりますか? (しかしthisはNunjucksで動作するようには思えません):あなたはJSON文字列として全体の文脈ダンプしたい場合

例えば、

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

答えて

4

は、あなたはグローバル機能を追加することができます

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

と `テンプレートはエラーレンダリングテンプレート

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

を彼女の結果をダンプ:TypeError例外:JSON'に円形構造の変換は、私は全くの私のテンプレートには何も追加しませんでした注意してください。 –

+0

このエラーは、文字列自己参照オブジェクトに変換しようとしたことを意味します。 'var obj = {a:10}; obj.b = obj; console.log(JSON.stringify(obj)); '(フィルタダンプは' JSON.stringify'と同じです)。たとえば、独自のフィルタを定義することができます。デバッグに 'dump'(=' JSON.stringify')の使用を避けるために、 'console.log(obj)'として 'print'を使用します。 –

+0

Bro文字通りコードを差し込み、このエラーが発生しました。 –

0

を私はあなたとは思いません変数thisはnunjucksテンプレートで利用できますが、検査する場合はdumpメソッドを使用できます。

{{ users | dump }}

だからそれはあなたがautoscapeしている場合は、本当に醜いれ、JSONオブジェクトを出力します。

{{ users | dump | safe }}

これは

代わりにうまく動作します:あなたがcontextが必要な場合は

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

{{ users | pprint | safe }}

関連する問題