Для циклов в ejs - PullRequest
       33

Для циклов в ejs

1 голос
/ 27 мая 2020

У меня есть массив, содержащий некоторое содержимое html, подобное этому.

const articleArray=['<p>first text</p>\r\n','<p>second text></p>\r\n','<p>third text</p>\r\n']

Мне нужно отобразить это в файле e js с помощью запроса на получение

request.render('viewArticles',{array : articleArray})

где viewArticles - файл e js. Я использовал промежуточное программное обеспечение, чтобы установить механизм просмотра как e js. Это код в e js

<% for(arr in array) {%>
    arr
<% } %>

Я не могу отобразить html. Как это решить?

Ответы [ 3 ]

1 голос
/ 27 мая 2020

Попробуйте это

<% array.forEach(function(item,index){ %>
        <%= item %> 
    <% }) %>
0 голосов
/ 27 мая 2020

'<% -%>' помогает напечатать код html как есть.

  • <% тег 'Scriptlet', для потока управления, без вывода </li>
  • <% _ 'Whitespace Slurping' Тег Scriptlet удаляет все пробелы перед ним </li>
  • <% = Выводит значение в шаблон (HTML с экранированием) </li>
  • <% - Выводит неэкранированное значение в шаблон </li>
  • <% # Тег комментария, без выполнения, без вывода </li>
  • <%% Выводит литерал '<%' </li>
  • %> Обычный конечный тег
  • -%> Тег Trim-mode ('newline slurp'), обрезает после новой строки
  • _%> Конечный тег 'Whitespace Slurping', удаляет все пробелы после него

    для ссылки, пожалуйста, нажмите на этот сайт E JS

    <% array.forEach(function(item) {%> <%-item%> <% }) %>

0 голосов
/ 27 мая 2020

Я не совсем уверен, как делать именно то, что вы хотите, но взгляните на это:

Во-первых, вместо того, чтобы создавать массив из HTML элементов, как насчет создания массива объектов, например:

const articles = [{text: "first text"} , {text: "second text"}, {text: "third text"}];

таким образом вам просто нужно написать HTML один раз, и я новичок в программировании, но я не вижу сценария, при котором вы бы получили ответ в HTML, обычно вы запрашиваете данные в базе данных или из файла JSON ... и, предполагая, что массив фактически передается в файл .e js, можно выполнить итерацию через него,

<% for(let a of articles){ %>

    <p> <%= a.text %> </p> 
    </br>

<% } %>


Если массив НЕ передается, проверьте их в своем коде:

// If you installed 
..."dependencies" : {
     "ejs": "x.x.x", 
} //Check the package.json file
// If you imported correctly
import ejs = require("ejs");

// If you specified the views path
app.set("views", path.join(__dirname, "views"));

// And the views engine
app.set("view engine", "ejs");

// And your route
request.render('viewArticles',{ articles : articles }) // Check if the file name is correct, I get this wrong many times

...