Доступ к переданному элементу массива в ejs - PullRequest
0 голосов
/ 10 ноября 2019

Я тестирую следующий код, который использует массив, переданный из моего скрипта node.js в файл .ejs. Кажется, у меня проблема с доступом к отдельным элементам массива в цикле. Кроме того, другие методы массива кажутся функциональными, например .length, кажется, возвращает правильное значение. Ошибка указывает на невозможность доступа к позиции индекса элемента массива. Сообщение об ошибке: «_count не определено» ... что я здесь не так делаю?

Мой node.js:

var test_up = [{pix: "Post 1", name: "Nica"}, {pix: "Post 2", name: "Danielle"}, {pix: "Post 3", name: "Maricar"}, {pix: "Post 4", name: "Peter"}, {pix: "Post 5", name: "Sampson"}, {pix: "Post 6", name: "Cleo"}]; 
res.render('index_bootx', {test_list: test_up}); 

Javascript в файле EJS с кодом, вызывающим проблему:

function initialize() {

var _count = 0;
var _limits = <%= test_list.length %>;  //THIS SEEMS FUNCTIONAL...
var _tally = 0;  

 if (<%= test_list.length %> > 20) {_limits = 20;}  //NO ERROR HERE...

  for (_count = 0; _count < _limits; _count++) {

  //**CREATE CONTENT HERE...

  var _item = document.createElement("div"); 
  _item.setAttribute("class", "lineups");
  _item.setAttribute("id", "member_" + _count);
  document.getElementById("row_" + _tally).appendChild(_item);

  var _name = document.createElement("h2");
  label = document.createTextNode(<% test_list[_count] %>);  //PROBLEM HERE! '_count is not defined'
  _name.appendChild(label);
  lineups.appendChild(_name);

 //**

 }  //for loop

}

Какой правильный синтаксис использовать для выбора элементов в переданных массивах в файл .ejs ...? Заранее благодарю.

Я изменил конец своей функции, добавив команду 'JSON.stringify', например:

var test = <%- JSON.stringify(test_list) %>;

document.getElementById("demo").innerHTML = test;

... но результат«demo» - это просто набор «объектов» ... однако правильное число:

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

Почему я вижу здесь ссылки на «объекты», а не на реальные строки имен после того, как я применяю JSON.stringifyметод?

1 Ответ

0 голосов
/ 10 ноября 2019

Попробуйте поместить <% теги вокруг цикла for также так:

<% var _count; %>
<% for (_count = 0; _count < _limits; _count++) { %>
...
<% } %> // for loop
...