【发布时间】:2018-09-07 11:50:14
【问题描述】:
我有一些来自 MySQL 数据库的数据,当我使用 Express 渲染它时,我将这些数据传递给 EJS 模板。从该数据中,我需要能够创建一个选择器元素,用户可以选择添加更多选择器元素(使用相同的数据)。我还需要一种方法来以某种方式识别每个选择器(在 jQuery 中生成它时,我尝试通过分配一个变量作为选择器的 id 和 name 属性的一部分来做到这一点),以便我以后可以将它们全部交还给数据库并根据收到的数据在另一个表中创建条目。
但是,当我尝试重新使用 EJS 变量时,不会生成代码,而是将 EJS 代码作为文本返回。我知道这是因为 EJS 是由服务器渲染的,所以我不能在前端以相同的方式使用它;但是,我一直无法找到有关如何解决此问题的解释。我是 Node 和 EJS 以及一般后端编程的新手,因此我们将不胜感激。
初始选择器和添加按钮的 HTML 代码:
<div class="form-group" id="tasks-form">
<label>Tasks</label>
<select class="form-control" id="task1" name="task1">
<% tasktypes.forEach (function (tasktype) { %>
<option value="<%- tasktype.taskid %>"><%- tasktype.description %></option>
<% }); %>
</select>
<button type="button" class="btn btn-primary" id="add-task">Add Task</button>
</div>
JS/JQuery 脚本:
$(document).ready(function() {
var formsAllowed = 20;
var currentForms = 1;
$('#add-task').click(function(){
if (currentForms < formsAllowed) {
currentForms ++;
$('#tasks-form').append('\
<select class="form-control" id="task' + currentForms + '" name="task' + currentForms + '"> \
<% tasktypes.forEach (function (tasktype) { %> \
<option value="<%- tasktype.tasktypeid %>"><%- tasktype.description %></option> \
<% }); %> \
</select> \
');
}
});
});
【问题讨论】:
标签: javascript jquery node.js ejs