Напишите переменную ejs в jQuery - PullRequest
4 голосов
/ 11 июня 2019

Я добавляю html к div, используя jQuery:

public / js / writeInputs.js

$("#myDiv").append("<input type='search' value='<%= filters.title %>' name='filters[title]' class='form-control'>")

В этом случае filtersэто объект, который я передаю из моего узла экспресс-бэкэнда, значение которого я хочу отобразить во входных данных.Тем не менее, вышеприведенное отображает переменную ejs в виде строкового литерала:

<%= filters.title %>

Если я жестко закодировал это значение в html, оно работает должным образом:

views / partials /input.ejs

<input type="search" name="filters[title]" value="<%= filters.title %>" class="form-control">

Как мне написать переменную ejs в jQuery?

Я попробовал эти подходы в своем приложении, но ни один из них не работает:

value="<%= filters.title %>"
value=${<%= filters.title %>}
value='"<%= filters.title %>"'

Ответы [ 3 ]

2 голосов
/ 13 июня 2019

Node express сначала визуализирует HTML, а затем браузер выполняет некоторые запросы на основе HTML для получения сценариев, изображений и т. Д. По этой причине <%= filters.title %> не интерпретируется EJS.

В качестве альтернативы визуализация некоторых данных вHTML и переписать JavaScript для чтения filters.title из HTML, например:

<input type="hidden" id="filter" value="<%= filters.title %>" />

<script src="yourScript.js"></script>

yourScript.js :

    var filter = document.getElementById("filter").value;
    $("#myDiv").append("<input type='search' value='" + filter + "' name='filters[title]' class='form-control'>");
0 голосов
/ 14 июня 2019

Только файлы ejs внутри вашей папки представлений отображаются с сервера, поэтому вам придется вместо этого создать переменную в этом файле.Вот пример:

view.ejs

<script>
    var ejsVal = <%= val %>; // You have to use var to make it global
</script>
<script src="script.js"></script>

script.js

console.log(ejsVal);
0 голосов
/ 13 июня 2019

ты можешь попробовать вот так?

var temp = <%= test  %>;
$("#myDiv").append("<input type='search' value='"+temp+"' name='filters[title]' class='form-control'>");
...