2012-03-15 5 views
9

jade teplateの中で中括弧をエスケープできますか? (私はnode.js内にjadeを使用します)jadeテンプレートの中括弧をエスケープするにはどうすればいいですか?

jQueryテンプレートをクライアントにレンダリングしたいと思います。 私はこのようなルックス脱出したいパート:あなたは、パイプを使用する必要が

div(class='clear') 
script(id='BoardListTemplate', type='text/x-jQuery-tmpl') 
    <p>${Title}</p> 
    <ul id="${Id}" class="IterationBoardList"> 
    <li class="AddNewItem">Add new Item</li> 
    {{tmpl(Items) "#BoardListItemTemplate"}} 
    </ul> 
script(id='BoardListItemTemplate', type='text/x-jQuery-tmpl') 
    <li class="Item" id="${{$data.Id}}"> 
    ${$data.Description}<br /> 
    Assigned to: ${$data.AssignedTo}<br/> 
    StoryPoints: ${$data.StoryPoints}</li> 
script(src='/javascripts/Scrummr.Engine.js', id='BoardListItemTemplate', type='text/javascript') 

多くのおかげ

+1

htmlエンティティ「{」と「}」を使用してみましたか? – arvidkahl

+1

はい、それは動作しません –

答えて

11

を(|)スクリプトブロック内の各ラインの前に看板。

例としてhttps://gist.github.com/2047079を参照してください。

+0

パイプは素晴らしい作品。多くのありがとう:-) –

+0

この回答は参考になりますが、実際には「中括弧をエスケープする方法」の回答ではありません。 – metamatt

3

ここでは2つの異なることが起こっています。

翡翠は空白を使用して文書構造を暗示します。インデント問題や改行が問題になります。ジェイド氏は、各行がHTMLタグを作成するものから始めることを期待しています。

あなたはそれをあなたがそれを変換したくない何かを送りたい場合 - 例えば、生のHTMLやスクリプトやあなたがクライアント上でレンダリングしたい生のテンプレート - あなたはどちらかでき

1 )は、各行をパイプ文字(|)で始まり、生テキストが続きます。 Jade docsから例:

p 
    | foo bar baz 
    | rawr rawr 
    | super cool 
    | go jade go 

2)周期前コンテナタグを終了して、生のテキストブロックを開始します。例は、再びジェイドのドキュメントから:

p. 
    foo asdf 
    asdf 
    asdfasdfaf 
    asdf 
    asd. 

別に、ジェイドはあなたがそれを補間したくない状況でエスケープする必要があるかもしれない、特別にいくつかの文字や文字を処理し、文字列の補間を行います。これはこの質問が尋ねた部分です(中括弧をエスケープする)。ジェイドは実際には特別に扱われませんが、#{特別に扱います。 #{#が必要な場合は、\#{}でエスケープすることができます。

+0

\ {{search.players}}は私が探していたものです...ありがとうございます@metamatt –

0

Jadeは、行の最後にドット(。)演算子を用意しています。これにより、子インデントブロック内のすべてをエスケープできます。

script(id='BoardListTemplate', type='text/x-jQuery-tmpl'). 
    // Everything inside here is completely escaped. 
    <p>${Title}</p> 
    <ul id="${Id}" class="IterationBoardList"> 
    <li class="AddNewItem">Add new Item</li> 
    {{tmpl(Items) "#BoardListItemTemplate"}} 
    </ul> 

- // outside here it's all JADE. 
h1 How about a JADE heading 

script(id='BoardListItemTemplate', type='text/x-jQuery-tmpl'). 
    // back to escaped script in here. 
    <li class="Item" id="${{$data.Id}}"> 
    ${$data.Description}<br /> 
    Assigned to: ${$data.AssignedTo}<br/> 
    StoryPoints: ${$data.StoryPoints}</li> 

script(src='/javascripts/Scrummr.Engine.js', id='BoardListItemTemplate', type='text/javascript'). 

最後のDOT(。)が重要な部分です。

関連する問題