Как я могу избежать фигурных скобок внутри шаблонов Jade? - PullRequest
10 голосов
/ 16 марта 2012

Как я могу избежать фигурных скобок внутри нефрита?(Я использую jade внутри node.js)

Я хочу рендерить шаблоны 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')

большое спасибо

Ответы [ 3 ]

11 голосов
/ 16 марта 2012

Вы должны использовать знак трубы (|) перед каждой строкой внутри блока скрипта.

См. https://gist.github.com/2047079 для примера.

3 голосов
/ 13 декабря 2012

Здесь происходят две разные вещи.

Джейд использует пробелы для обозначения структуры документа;отступы имеют значение, и разрывы строк имеют значение, и Jade ожидает, что каждая строка будет начинаться с чего-то, из чего будут создаваться теги HTML.

Если вы хотите передать ему что-то, что вы не хотите, чтобы он конвертировал - например,необработанный HTML или скрипт или необработанный шаблон, который вы хотите отобразить на клиенте - вы можете либо

1) начинать каждую строку с символа канала (|), за которым следует необработанный текст.Пример из Jade docs :

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

2) начать блок необработанного текста, завершив предыдущий тег контейнера точкой.Пример, опять же из Jade docs:

p.
  foo asdf
  asdf
   asdfasdfaf
   asdf
  asd.

Отдельно Jade выполняет интерполяцию строк, обрабатывая некоторые символы или символы специально, которые вам может потребоваться экранировать в контекстах, где вы не хотите, чтобы они интерполировали.Это та часть вопроса, о которой спрашивают (избегая фигурных скобок).Джейд на самом деле не относится к {особенно, но это относится к {{особенно.Если вам нужен # {, вы можете избежать этого как \ # {.

0 голосов
/ 01 мая 2014

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').

Точка (.) В конце является важной частью.

...