未定义属性ejs:nodejs

时间:2016-06-16 12:50:54

标签: node.js ejs

我正在关注一个教程并被困在这里。一切看起来都不错。我仍然得到这个错误。有人可以指出我正确的方向。

  

未定义memberName

    <% for(var i=0; i < notes.length; i++) { %>
        <div class="list-group-item">
          <div>Note from <em><strong><%=memberName[i]%></strong></em> on:
            <%= createdOn.toDateString() %>
              <strong><%= project[i] %></strong></div>
          <div><strong>Work yesterday:</strong>
            <%= workYesterday[i] %>
          </div>
          <div><strong>Work today:</strong>
            <%= workToday[i] %>
          </div>
          <div><strong>Impediment:</strong>
            <%= impediment[i] %>
          </div>
        </div>
        <%}%>

控制器代码:

exports.list = function (req, res) {
    var query = Standup.find();
    query.limit(12)
        .exec(function (err, results) {
            console.log(results);
            res.render('index', { title: 'Standup - List', notes: results });
        });
};

3 个答案:

答案 0 :(得分:0)

ejs文件中的

<%=memberName[i]%>表示&#34;当我发送ejs时,我将用memberName&#34;的值替换它。

但是在你的控制器中,你没有提供它,阻止了ejs。

在控制器中,你应该有类似的东西:

res.render('index', {
    title: 'Standup - List',
    notes: results,
    memberName: memberName //<--
});

修复此问题后,您还必须提供createdOnprojectworkYesterdayworkTodayworkTomorrow和{{1} }。

答案 1 :(得分:0)

<%=是用于评估HTML中的值的EJS标记。 <%= memberName %>会在HTML代码中输出变量memberName的值。因此,在渲染html页面时需要传递参数memberName。你错过了参数。 您的控制器代码应如下所示:

exports.list = function (req, res) {
    var query = Standup.find();
    query.limit(12)
        .exec(function (err, results) {
            console.log(results);
            res.render('index', { title: 'Standup - List', notes: results, memberName: 'Test Member Name' });
        });
};

答案 2 :(得分:0)

你可能正在寻找这个:

<% for(var i=0; i < notes.length; i++) { %>
  <div class="list-group-item">
    <div>Note from <em><strong><%= notes[i].memberName %></strong></em> on:
      <%= notes[i].createdOn.toDateString() %>
        <strong><%= notes[i].project %></strong></div>
    <div><strong>Work yesterday:</strong>
      <%= notes[i].workYesterday %>
    </div>
    <div><strong>Work today:</strong>
      <%= notes[i].workToday %>
    </div>
    <div><strong>Impediment:</strong>
      <%= notes[i].impediment %>
    </div>
  </div>
 <%}%>

可以进一步减少到这个:

<% notes.forEach(function(note) { %>
  <div class="list-group-item">
    <div>Note from <em><strong><%= note.memberName %></strong></em> on:
      <%= note.createdOn.toDateString() %>
        <strong><%= note.project %></strong></div>
    <div><strong>Work yesterday:</strong>
      <%= note.workYesterday %>
    </div>
    <div><strong>Work today:</strong>
      <%= note.workToday %>
    </div>
    <div><strong>Impediment:</strong>
      <%= note.impediment %>
    </div>
  </div>
<% }) %>