@vshvydky

Jade, как передать значение из скрипта в html элемент?

Доброго всем дня. Не могу понять как реализовать на jade конструкцию из ejs :
<% if (errors) {%>
  <% errors.forEach(function (error) { %>
    <%= __(error) %>
  <% }) %>
<% } %>

<form role="form" action="/auth/local" method="post">
  <input type="text" name="identifier" placeholder="Username or Email">
  <input type="password" name="password" placeholder="Password">
  <button type="submit">Sign in</button>
</form>

<% if (Object.keys(providers).length) {%>
  <h4>You can also use one of these...</h4>
  <% Object.keys(providers).forEach(function (key) { %>
    <a href="/auth/<%= providers[key].slug %>" role="button"><%= providers[key].name %></a>
  <% }) %>
<% } %>

Интересует как можно выдернуть из выполняющегося js по аналогии с ejs значения конкретных переменных для передачи их в шаблон. В ejs это реализуется через
<% скрипт %>
<%=ДАННЫЕ%>
<% продолжение скрипта %>

при этом в шаблон передастся только значение данных.
Вопрос как это можно реализовать на jade?
  • Вопрос задан
  • 354 просмотра
Решения вопроса 1
@vshvydky Автор вопроса
Сам спросил, сам отвечаю. Так бывает.
Небольшое пояснение откуда этот код. Модуль sails-generate-auth для sails.js По умолчанию sails.js использует шаблонизатор EJS и нет никаких проблем с вышеописанным кодом. Но стоит сгенерировать проект под шаблонизатор jade, как модуль остается без вьюхи и соответственно функционал перестает быть доступным.
Дабы не упустить мелочей, вьюха получает входные данные в виде массива errors и объекта providers:
res.view({
      providers : providers
    , errors    : req.flash('error')
    });

Собственно вариант реализации, вдруг кому тоже будет нужно:
each error in errors
    - var errorloc = __(error);
    li #{errorloc}

form(role='form', action='/auth/local', method='post')
  input(type='text', name='identifier', placeholder='Username or Email')
  input(type='password', name='password', placeholder='Password')
  button(type='submit') Sign in


-if (Object.keys(providers).length)
  h4 You can also use one of these...
-var name = [];
-var slug = [];
-Object.keys(providers).forEach(function (key) { name.push(providers[key].name); slug.push(providers[key].slug) })
-for (var i = 0; i < name.length; i++)
  a(href='/auth/#{slug[i]}', role='button') #{name[i]}&nbsp
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы