Как передать переменную Javascript в объект EJS в качестве параметра? - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь объединить переменную Javascript с объектом EJS, чтобы сделать его динамичным.Есть ли способ сделать это с помощью синтаксиса EJS или Javascript?

Например

Backend

res.render('webpage', {bookObj : bookObj})

Frontend

let author = "Shakespeare"
let book = "<%= bookObj['Shakespeare'] %>"  // <-- it works

let book = "<%= bookObj['" + author + "'] %>"  // <-- it does not work

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Вам необходимо определить переменную в контексте EJS, чтобы получить доступ к коду на стороне сервера.

<% var author = "Shakespeare"; %>
let author = "<%= author %>";    
let book = "<%= bookObj[author] %>"  
0 голосов
/ 04 апреля 2019

Вы путаете серверный JavaScript в вашем EJS с клиентским JavaScript, который вы генерируете из него.

Синтаксис строки вне тегов EJS не имеет отношения к JS внутри него, и используемая вами переменная должна быть объявлена ​​в том же программном обеспечении, что и вы.

<% let author = "Shakespeare";  %>
let book = "<%= bookObj[author] %>" 

Конечно, если вывод содержит специальные символы, он сломается, поэтому вам лучше генерировать литералы JS, используя кодировщик JSON:

<% let author = "Shakespeare"; %>
let book = <%- JSON.stringify(bookObj[author]) %>;

См. Также В чем разница между программированием на стороне клиента и на стороне сервера?

...