Как я могу избежать фигурных скобок внутри шаблонов нефрита?

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

Я хочу отобразить шаблоны jQuery для клиента. Часть, которую я хочу убежать, выглядит следующим образом:

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

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

3 ответа

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

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


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

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

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

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

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

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

p.
 foo asdf
 asdf
 asdfasdfaf
 asdf
 asd.

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


Jade предоставляет оператор точки (.) в конце строки, который позволяет вам избежать всего внутри блока отступа дочернего элемента.

script(id='BoardListTemplate', type='text/x-jQuery-tmpl').
 // Everything inside here is completely escaped.
 <p>${Title}</p>
 <ul id="${Id}">
 <li>Add new Item</li>
 {{tmpl(Items) "#BoardListItemTemplate"}}
 </ul>
- // outside here it all JADE.
h1 How about a JADE heading
script(id='BoardListItemTemplate', type='text/x-jQuery-tmpl').
 // back to escaped script in here.
 <li id="${{$data.Id}}">
 ${$data.Description}
 Assigned to: ${$data.AssignedTo}
 StoryPoints: ${$data.StoryPoints}</li>
script(src='/javascripts/Scrummr.Engine.js', id='BoardListItemTemplate', type='text/javascript').

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

licensed under cc by-sa 3.0 with attribution.