我有一个“用户”模型和一个“实验室”模型。 当我创建一个新的Lab对象时,我希望能够以“select”html格式从列表中选择用户... 因此,在lab / new.ejs的视图中,我首先通过执行以下操作在服务器控制台中显示User模型数据库中的所有用户:
<% User.find(function(err, users) {
_.each(users, function(user) {%>
<%console.log(user.name)%>
<% })
});%>
它会正确显示我所有用户名的列表。 但是当我尝试将所有这些用户放在下面的选择表单中时,选择表单将返回空,并带有以下代码...
<div class="control-group">
<select multiple class="form-control" name="users">
<% User.find(function(err, musers) {
_.each(musers, function(muser) {%>
<option><%=muser.name%></option>
<% })
});%>
</select>
</div>
.ejs视图似乎没有看到&lt;%= muser.name%&gt;的内容服务器做的变量......任何想法为什么?
答案 0 :(得分:1)
您不应该在视图中运行异步代码。在控制器中找到您想要的用户,然后将其作为视图本地提供给视图:
<强> API /控制器/ LabController.js:
new: function(req, res) {
User.find(function(err, users) {
if (err) {return res.serverError(err);}
return res.view({users: users});
});
}
<强>视图/实验室/ new.js:
<div class="control-group">
<select multiple class="form-control" name="users">
<% _.each(users, function(user) {%>
<option><%=user.name%></option>
<% }) %>
</select>
</div>