10

翡翠のテプレート内で中かっこを脱出するにはどうすればよいですか?(私はnode.js内で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')

どうもありがとう

4

3 に答える 3

11

スクリプトブロック内の各行の前にパイプ(|)記号を使用する必要があります。

例については、 https://gist.github.com/2047079を参照してください。

于 2012-03-15T21:28:03.473 に答える
3

ここで起こっていることは2つあります。

Jadeは空白を使用して、ドキュメントの構造を示します。インデントと改行が重要であり、Jadeは、各行がHTMLタグを作成するもので始まることを期待しています。

変換したくないもの(たとえば、生のHTMLやスクリプト、またはクライアントでレンダリングする生のテンプレート)をフィードする場合は、次のいずれかを実行できます。

1)各行をパイプ文字(|)で開始し、その後に生のテキストを続けます。Jadeドキュメントの例:

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

2)前のコンテナタグをピリオドで終了して、生のテキストブロックを開始します。例、これもJadeドキュメントから:

p.
  foo asdf
  asdf
   asdfasdfaf
   asdf
  asd.

これとは別に、Jadeは文字列補間を実行し、一部の文字または文字を特別に処理します。これは、補間したくないコンテキストではエスケープする必要がある場合があります。これは、この質問が尋ねた部分です(中括弧をエスケープします)。ジェイドは実際には{を特別に扱いませんが、#{を特別に扱います。#{が必要な場合は、\#{としてエスケープできます。

于 2012-12-12T20:30:44.400 に答える
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(。)は重要な部分です。

于 2014-05-01T00:30:57.160 に答える