Как использовать переменную node.js в функции на стороне клиента? - PullRequest
0 голосов
/ 27 февраля 2019

У меня довольно странная проблема.На стороне сервера я вызываю ejs-страницу по

res.render('index', {varArray: JSON.parse(response)});

Когда я пытаюсь использовать переменную "varArray" в HTML-коде, все работает нормально, например:

<% for (var i = 0; i < varArray.length; i++) { %>
    <option value="<%= varArray[i].id %>"><%= varArray[i].name %></option>
<% } %>

НО: как только я хочу использовать ту же переменную в функции на той же странице, я получаю сообщение об ошибке, что эта переменная не определена.

<body>
<script>
function test() {
  for (var i = 0; i < varArray.length; i++) {
// do something
  }
};
</script>

Надеюсь, кто-то может мне помочь.

1 Ответ

0 голосов
/ 27 февраля 2019

К сожалению, я не могу проверить это в ejs, но если это массив JavaScript, вы могли бы ...

  1. JSON.stringify() переменная,
  2. распечатать строку в дом
  3. Назначьте его переменной в пределах желаемой области.

<% for (var i = 0; i < varArray.length; i++) { %>
    <option value="<%= varArray[i].id %>"><%= varArray[i].name %></option>
<% } %>

<script>
var varArray = <%= JSON.stringify(varArray) %>;

function test() {
  for (var i = 0; i < varArray.length; i++) {
// do something
  }
};
</script>

Если функция test() не отображается с помощью ejs, вы можете назначить ее глобальному объекту (окно) , а затем использовать ее где угодно послеэто было определено ...

<% for (var i = 0; i < varArray.length; i++) { %>
    <option value="<%= varArray[i].id %>"><%= varArray[i].name %></option>
<% } %>

<script>
window.varArray = <%= JSON.stringify(varArray) %>;
</script>

<script>
function test() {
  for (var i = 0; i < varArray.length; i++) {
// do something
  }
};
</script>
...