Передача HTML-элементов в файл Jade - PullRequest
4 голосов
/ 13 сентября 2011

Можно ли передать элементы HTML в файл Jade, например, я бы хотел, чтобы следующие элементы заполняли элемент p текстом, а элемент кода - некоторым содержащимся текстом, вложенным в элемент p.

JSON, содержащий строки

var news = {
  one : {
    title : "Using JSON",
     body : "Using JSON is a great way of passing information into the jade template files."+
            "It can be looped over using jades each syntax <code>test</code>"
  },
  two : {
    title : "",
    body : ""
  }
}

Маршрутизация HTTP-запроса

// Routes
app.get(navigation.home.uri, function(req, res){ //Home
  res.render(navigation.home.url, {
    title: navigation.home.title,
    navigation: navigation,
    news: news
  });
});

Фрагмент файла Jade, с циклом для каждой новости

  section#news
    - each item in news
      article(class="news")
        header
          h2 #{item.title}
        p #{item.body}

Ответы [ 2 ]

14 голосов
/ 13 сентября 2011

Используйте !{item.body} вместо #

1 голос
/ 20 мая 2014

Принятый ответ действительно верен для примера, данного @Jack, однако я использовал его без начального тега p:

block content
    .jumbotron
        !{template.sections.welcome}
    .panel.panel-default
        !{template.sections.headline}

А это не правильно и выдает некоторые нефритовые предупреждения, такие как

Warning: missing space before text for line 6 of jade file "~/demo/views/home.jade"

Это потому, что вместо использования Unescaped Buffered Code он использует интерполяцию и предназначен для использования с длинными строками.

Таким образом, правильный синтаксис (как объяснено здесь ) будет:

block content
    .jumbotron
        != template.sections.welcome
    .panel.panel-default
        != template.sections.headline

Надеюсь, это сэкономит кому-то время, пытаясь докопаться до сути этих предупреждений!

...